Skip to content

Commit 17369a1

Browse files
authored
Fix references.md (#21)
* Obey to translation table * Fix conversion error * Obey to translation table * Fix conversion error * Fix conversion error * Obey to translation table * Translate "move out" * Obey to translation table * Fix typo * Obey to translation table * Trim extra character * Make letters italic * Fix typo * Fix typo * Fix typo * Obey to translation table
1 parent bda7dae commit 17369a1

File tree

1 file changed

+44
-44
lines changed

1 file changed

+44
-44
lines changed

src/references.md

+44-44
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# References
33
-->
44

5-
# リファレンス
5+
# 参照
66

77
<!--
88
This section gives a high-level view of the memory model that *all* Rust
@@ -15,38 +15,38 @@ this more fundamental model is satisfied.
1515

1616
このセクションでは、*すべての* Rust プログラムが満たさなくてはならないメモリモデルを
1717
ざっくりと見ていきます。
18-
安全なコードは、ボローチェッカーによってこのモデルを満たしていることが静的に検証されます
19-
危険なコードは、ボローチェッカーの裏をかくかもしれませんが、このモデルを満たします。
18+
安全なコードは、借用チェッカによってこのモデルを満たしていることが静的に検証されます
19+
アンセーフなコードは、借用チェッカの裏をかくかもしれませんが、このモデルを満たします。
2020
この基本的なモデルを満たしている限り、より多くのプログラムがコンパイルに通るように
21-
ボローチェッカーを拡張することも可能です
21+
借用チェッカを拡張することも可能です
2222

2323
<!--
2424
There are two kinds of reference:
2525
-->
2626

27-
リファレンスには 2 種類があります
27+
参照には 2 種類あります
2828

2929
<!--
3030
* Shared reference: `&`
3131
* Mutable reference: `&mut`
3232
-->
3333

34-
* 共有リファレンス: `&`
35-
* 可変リファレンス: `&mut`
34+
* 共有参照: `&`
35+
* 可変参照: `&mut`
3636

3737
<!--
3838
Which obey the following rules:
3939
-->
4040

41-
リファレンスは次のルールに従います
41+
参照は次のルールに従います
4242

4343
<!--
4444
* A reference cannot outlive its referent
4545
* A mutable reference cannot be aliased
4646
-->
4747

48-
* リファレンスのライフタイムが、参照先のライフタイムより長くなることはできません。
49-
* 可変リファレンスは、別名を持つことができません。
48+
* 参照のライフタイムが、参照先のライフタイムより長くなることはできません。
49+
* 可変参照は、別名を持つことができません。
5050

5151
<!--
5252
That's it. That's the whole model. Of course, we should probably define
@@ -88,7 +88,7 @@ fields (if any), and so on.
8888
もし、Rust が扱うのが値だけ(ポインタはない)であれば、
8989
すべての値はただ一つの変数か複合型に所有されることになります。
9090
ここから所有権の*木構造*が自然に導かれます。
91-
スタック自信が木のルートになり、変数が直接の子になります。
91+
スタック自身が木のルートになり、変数が直接の子になります。
9292
変数がフィールドを持つのであれば、それは変数の直接の子になるでしょう。
9393

9494
<!--
@@ -110,8 +110,8 @@ reference, you're declaring that an ownership path exists to this address
110110
of memory.
111111
-->
112112

113-
リファレンスは、単純にパスの名前と定義できます
114-
リファレンスを作成するということは、あるメモリアドレスに所有権の
113+
参照は、単純にパスの*名前*と定義できます
114+
参照を作成するということは、あるメモリアドレスに所有権の
115115
パスが存在することを宣言するということです。
116116

117117
<!--
@@ -157,11 +157,11 @@ its children). If this is done, the value may be mutated. In particular, a
157157
mutable reference can be taken.
158158
-->
159159

160-
一般に、一意ではないパスを参照できるのは、共有リファレンスだけです
160+
一般に、一意ではないパスを参照できるのは、共有参照だけです
161161
しかし、相互排他を保証するメカニズムがあれば、一時的にその値(とそしてすべての子ども)への唯一のパスを確立し、
162162
「唯一の真の所有者」を確立できるかもしれません。
163163
もしこれが可能なら、その値を変更できるかもしれません。
164-
とくに、可変リファレンスを取ることができるようになります
164+
とくに、可変参照を取ることができるようになります
165165

166166
<!--
167167
The most common way to establish such a path is through *interior mutability*,
@@ -182,8 +182,8 @@ refcount itself uses interior mutability.
182182
-->
183183

184184
この効果を使った興味深い例が Rc 自身です。もし Rc の参照カウントが 1 なら、
185-
内部状態を変更したり、move したりしても安全です
186-
refcount 自体も内部可変性を使っています
185+
内部状態を変更したり、ムーブしたりしても安全です
186+
参照カウント自体も内部可変性を使っています
187187

188188
<!--
189189
In order to correctly communicate to the type system that a variable or field of
@@ -208,7 +208,7 @@ Note: Liveness is not the same thing as a *lifetime*, which will be explained
208208
in detail in the next section of this chapter.
209209
-->
210210

211-
生存性 (liveness) は、この章の次の節でで詳しく説明する *ライフタイム (lifetime)* とは違うことに注意してください。
211+
生存性 (liveness) は、この章の次の節で詳しく説明する *ライフタイム (lifetime)* とは違うことに注意してください。
212212

213213
<!--
214214
Roughly, a reference is *live* at some point in a program if it can be
@@ -217,11 +217,11 @@ unreachable (for instance, they reside in freed or leaked memory). Mutable
217217
references can be reachable but *not* live through the process of *reborrowing*.
218218
-->
219219

220-
大雑把に言うと、リファレンスをデリファレンスできるとき
221-
そのリファレンスは、プログラム中のある時点で *生存している* といえます。
222-
共有リファレンスは、文字通り到達不可能な場合(たとえば、解放済みメモリやリークしてるメモリに
220+
大雑把に言うと、参照を参照外しできるとき
221+
その参照は、プログラム中のある時点で *生存している* といえます。
222+
共有参照は、文字通り到達不可能な場合(たとえば、解放済みメモリやリークしてるメモリに
223223
存在している場合)を除いて、常に生存しています。
224-
可変リファレンスには*又貸し*というプロセスがあるので、到達できても生存して*いない*ことがあります。
224+
可変参照には*又貸し*というプロセスがあるので、到達できても生存して*いない*ことがあります。
225225

226226

227227
<!--
@@ -231,9 +231,9 @@ reborrows derived from it expire. For instance, a mutable reference can be
231231
reborrowed to point to a field of its referent:
232232
-->
233233

234-
可変リファレンスは、その子孫を他の共有リファレンスまたは可変リファレンスに又貸しすることができます
235-
又貸ししたリファレンスは、派生したすべたの又貸しの有効期限が切れると、ふたたび生存することになります
236-
たとえば、可変リファレンスは、その参照先の一つのフィールドを指すリファレンスを又貸しすることができます
234+
可変参照は、その子孫を他の共有参照または可変参照に又貸しすることができます
235+
又貸しした参照は、派生したすべての又貸しの有効期限が切れると、再び生存することになります
236+
例えば、可変参照は、その参照先の一つのフィールドを指す参照を又貸しすることができます
237237

238238
```rust
239239
let x = &mut (1, 2);
@@ -243,7 +243,7 @@ let x = &mut (1, 2);
243243
// この時点で y は生存しているが、x は生存していない
244244
*y = 3;
245245
}
246-
// y がスコープ外に出たので、x がふたたび生存中になる
246+
// y がスコープ外に出たので、x が再び生存中になる
247247
*x = (5, 7);
248248
```
249249

@@ -254,8 +254,8 @@ explicitly enables this to be done with disjoint struct fields, because
254254
disjointness can be statically proven:
255255
-->
256256

257-
*複数の*可変リファレンスに又貸しすることも可能ですが、その複数のリファレンスは互いに素でなくてはいけません
258-
つまり、どのリファレンスも他のリファレンスの先祖であってはいけないということです
257+
*複数の*可変参照に又貸しすることも可能ですが、その複数の参照は互いに素でなくてはいけません
258+
つまり、どの参照も他の参照の先祖であってはいけないということです
259259
Rust は、構造体のフィールドが互いに素であることを静的に証明できるので、
260260
フィールドの又貸しが可能です。
261261

@@ -294,28 +294,28 @@ only given to *live* owned references because moving its referent would of
294294
course invalidate all outstanding references prematurely.
295295
-->
296296

297-
話を単純にするために、変数をリファレンス型の一種*所有中*リファレンス、と仮定してみましょう。
298-
所有中リファレンスは、可変リファレンスとほとんど同じ意味を持ちます
299-
可変リファレンスまたは共有リファレンスに又貸しでき、それによって生存中ではなくなります。
300-
生存中の所有中リファレンスは、値を解放(move out)できるという特殊な性質があります
301-
(とはいえ、可変リファレンスは値をスワップアウトできますが)。
302-
この能力は、*生存中の* 所有中リファレンスのみに与えられています
303-
そうでなければ、早すぎるタイミングでその他のリファレンスを無効にすることになります
297+
話を単純にするために、変数を参照型の一種*所有中*参照、と仮定してみましょう。
298+
所有中参照は、可変参照とほとんど同じ意味を持ちます
299+
可変参照または共有参照に又貸しでき、それによって生存中ではなくなります。
300+
生存中の所有中参照は、値を解放(ムーブアウト)できるという特殊な性質があります
301+
(とはいえ、可変参照は値をスワップアウトできますが)。
302+
この能力は、*生存中の* 所有中参照のみに与えられています
303+
そうでなければ、早すぎるタイミングでその他の参照を無効にすることになります
304304

305305
<!--
306306
As a local lint against inappropriate mutation, only variables that are marked
307307
as `mut` can be borrowed mutably.
308308
-->
309309

310-
不適切な値の変更を lint が検出するので、`mut` とマークされた変数だけが変更可能なように貸し出されます
310+
不適切な値の変更を lint が検出するので、`mut` とマークされた変数だけが変更可能なように借用されます
311311

312312
<!--
313313
It is interesting to note that Box behaves exactly like an owned reference. It
314314
can be moved out of, and Rust understands it sufficiently to reason about its
315315
paths like a normal variable.
316316
-->
317317

318-
Box がまさに所有中リファレンスのように振る舞うというおとを覚えておくと良いでしょう
318+
Box がまさに所有中参照のように振る舞うということを覚えておくと良いでしょう
319319
Box は値を解放することができ、変数が解放された時と同様に Rust はそのパスについて推論するための
320320
十分な情報を持っています。
321321

@@ -337,15 +337,15 @@ With liveness and paths defined, we can now properly define *aliasing*:
337337
of its ancestors or descendants.**
338338
-->
339339

340-
**可変リファレンスは、その先祖か子孫に他のリファレンスが存在している時、別名を持つといいます。**
340+
**可変参照は、その先祖か子孫に他の参照が存在している時、別名を持つといいます。**
341341

342342
<!--
343343
(If you prefer, you may also say the two live references alias *each other*.
344344
This has no semantic consequences, but is probably a more useful notion when
345345
verifying the soundness of a construct.)
346346
-->
347347

348-
二つの生存中のリファレンスが互いの別名になっている、と言うこともできます。
348+
二つの生存中の参照が互いの別名になっている、と言うこともできます。
349349
意味上の違いは特にありませんが、プログラムの構造の健全性を検証する時には、
350350
この考え方の方がわかりやすいでしょう。)
351351

@@ -364,17 +364,17 @@ ownership or aliasing semantics. As a result, Rust makes absolutely no effort to
364364
track that they are used correctly, and they are wildly unsafe.
365365
-->
366366

367-
実際には、もう少し複雑です。リファレンスに加えて Rust には*生のポインタ*もあります。
367+
実際には、もう少し複雑です。参照に加えて Rust には*生ポインタ*もあります。
368368
`*const T``*mut T` のことです。
369-
生のポインタには、継承可能な所有権も別名という概念もありません。
370-
そのため、Rust は生のポインタを追跡する努力を一切しませんし、名前のポインタは極めて危険です
369+
生ポインタには、継承可能な所有権も別名という概念もありません。
370+
そのため、Rust は生ポインタを追跡する努力を一切しませんし、生ポインタは極めて危険です
371371

372372
<!--
373373
**It is an open question to what degree raw pointers have alias semantics.
374374
However it is important for these definitions to be sound that the existence of
375375
a raw pointer does not imply some kind of live path.**
376376
-->
377377

378-
**生のポインタが別名という意味をどの程度持っているのか、というのはまだ答えの出てない問題です。
379-
しかし、この節で出てきた定義が健全であるためには、生のポインタを使うとある種の生存パスが
378+
**生ポインタが別名という意味をどの程度持っているのか、というのはまだ答えの出てない問題です。
379+
しかし、この節で出てきた定義が健全であるためには、生ポインタを使うとある種の生存パスが
380380
わからなくなるということ重要です。**

0 commit comments

Comments
 (0)