@@ -13,7 +13,7 @@ the scope it's valid for.
13
13
14
14
Rust は今まで説明してきたルールを* ライフタイム* を使って強制します。
15
15
ライフタイムとは、要するにプログラム中のスコープの名前です。
16
- リファレンスと、リファレンスを含むものとは、有効なスコープを示すライフタイムでタグづけられています 。
16
+ 参照と、参照を含むものとは、有効なスコープを示すライフタイムでタグ付けられています 。
17
17
18
18
<!--
19
19
Within a function body, Rust generally doesn't let you explicitly name the
@@ -79,7 +79,7 @@ The borrow checker always tries to minimize the extent of a lifetime, so it will
79
79
likely desugar to the following:
80
80
-->
81
81
82
- ボローチェッカーは 、ライフタイムの長さを最小にしようとするので、
82
+ 借用チェッカは 、ライフタイムの長さを最小にしようとするので、
83
83
これは次のように脱糖されるでしょう。
84
84
85
85
``` rust,ignore
@@ -109,7 +109,7 @@ Actually passing references to outer scopes will cause Rust to infer
109
109
a larger lifetime:
110
110
-->
111
111
112
- リファレンスを外のスコープに返す場合は 、Rust はより大きいライフタイムを推論することになります。
112
+ 参照を外のスコープに返す場合は 、Rust はより大きいライフタイムを推論することになります。
113
113
114
114
``` rust
115
115
let x = 0 ;
@@ -124,7 +124,7 @@ z = y;
124
124
'b: {
125
125
let z: &'b i32;
126
126
'c: {
127
- // ここでは 'b を使う必要があります。なぜならこのリファレンスは
127
+ // ここでは 'b を使う必要があります。なぜならこの参照は
128
128
// スコープ `b に渡されるからです。
129
129
let y: &'b i32 = &'b x;
130
130
z = y;
@@ -138,7 +138,7 @@ z = y;
138
138
# Example: references that outlive referents
139
139
-->
140
140
141
- # 例:参照先より長く生きるリファレンス
141
+ # 例:参照先より長く生きる参照
142
142
143
143
<!--
144
144
Alright, let's look at some of those examples from before:
@@ -177,10 +177,10 @@ to the u32 originated in, or somewhere *even earlier*. That's a bit of a tall
177
177
order.
178
178
-->
179
179
180
- ` as_str ` のシグネチャは、* ある* ライフタイムを持つ u32 へのリファレンスをとり 、
181
- そのリファレンスと * 同じ長さだけ* 生きる str へのリファレンスを生成することを約束します 。
180
+ ` as_str ` のシグネチャは、* ある* ライフタイムを持つ u32 への参照をとり 、
181
+ その参照と * 同じ長さだけ* 生きる str への参照を生成することを約束します 。
182
182
このシグネチャが問題になるかもしれないと、すでに話しました。
183
- このシグネチャは、引数の u32 を指すリファレンスが生成されたスコープか 、もしくは* それより以前のスコープ* で、str を探すことを意味します。これはなかなか難しい注文です。
183
+ このシグネチャは、引数の u32 を指す参照が生成されたスコープか 、もしくは* それより以前のスコープ* で、str を探すことを意味します。これはなかなか難しい注文です。
184
184
185
185
<!--
186
186
We then proceed to compute the string `s`, and return a reference to it. Since
@@ -193,13 +193,13 @@ the first thing we said that references can't do. The compiler rightfully blows
193
193
up in our face.
194
194
-->
195
195
196
- それから文字列 ` s ` を計算し、そのリファレンスを返します 。
197
- この関数は、返されるリファレンスが ` 'a ` より長生きすることを約束しているので、このリファレンスのライフタイムとして ` 'a ` を使うことを推論します。
196
+ それから文字列 ` s ` を計算し、その参照を返します 。
197
+ この関数は、返される参照が ` 'a ` より長生きすることを約束しているので、この参照のライフタイムとして ` 'a ` を使うことを推論します。
198
198
残念なことに、` s ` はスコープ ` 'b ` の中で定義されているので、
199
199
この推論が妥当になるためには、` 'b ` が ` 'a ` を含んでいなくてはなりません。
200
200
ところがこれは明らかに成立しません。` 'a ` はこの関数呼び出しそものを含んでいるからです。
201
- 結局、この関数は参照先より長生きするリファレンスを生成してしまいました 。
202
- そしてこれは* 文字通り* 、リファレンスがやってはいけないことの一番目でした 。
201
+ 結局、この関数は参照先より長生きする参照を生成してしまいました 。
202
+ そしてこれは* 文字通り* 、参照がやってはいけないことの一番目でした 。
203
203
コンパイラは正当に怒りだします。
204
204
205
205
<!--
@@ -271,7 +271,7 @@ our implementation *just a bit*.)
271
271
# Example: aliasing a mutable reference
272
272
-->
273
273
274
- # 例:可変リファレンスの別名付け
274
+ # 例:可変参照の別名付け
275
275
276
276
<!--
277
277
How about the other example:
@@ -312,9 +312,9 @@ violate the *second* rule of references.
312
312
313
313
これは、すこし分かりにくいですが面白い問題です。
314
314
私たちは、Rust が次のような理由で、このプログラムを拒否するだろうと思っています。
315
- つまり、` push ` するために ` data ` への可変リファレンスを取ろうとするとき 、
316
- ` data ` の子孫への共有リファレンス ` x ` が生存中です。
317
- これは可変リファレンスの別名となり、リファレンスの * 二番目* のルールに違反します。
315
+ つまり、` push ` するために ` data ` への可変参照を取ろうとするとき 、
316
+ ` data ` の子孫への共有参照 ` x ` が生存中です。
317
+ これは可変参照の別名となり、参照の * 二番目* のルールに違反します。
318
318
319
319
<!--
320
320
However this is *not at all* how Rust reasons that this program is bad. Rust
@@ -327,10 +327,10 @@ within `'b`, and rejects our program because the `&'b data` must still be live!
327
327
-->
328
328
329
329
ところが、Rust がこのプログラムを悪いと推論するやり方は* 全く違う* のです。
330
- Rust は、` x ` が ` data ` の部分パスへのリファレンスであることは理解しません 。
330
+ Rust は、` x ` が ` data ` の部分パスへの参照であることは理解しません 。
331
331
Rust は Vec のことなど何も知らないのです。
332
332
Rust に* 見えている* のは、` x ` は println! のためにスコープ ` 'b ` の中で生存しなくてはならないことです。
333
- さらに、` Index::index ` のシグネチャは、` data ` を参照するリファレンスが
333
+ さらに、` Index::index ` のシグネチャは、` data ` を参照する参照が
334
334
スコープ ` 'b ` の中で生存することを要求します。
335
335
` push ` を呼び出すときに、` &'c mut data ` を取ろうとすることを Rust は理解します。
336
336
Rust はスコープ ` 'c ` が スコープ ` 'b ` に含まれていることを知っているので、
@@ -347,7 +347,7 @@ correct with respect to Rust's *true* semantics are rejected because lifetimes
347
347
are too dumb.
348
348
-->
349
349
350
- ここでは、ライフタイムをチェックするシステムは、私たちが維持したいリファレンスの意味論に比べて
350
+ ここでは、ライフタイムをチェックするシステムは、私たちが維持したい参照の意味論に比べて
351
351
とても荒いことを見てきました。
352
352
ほとんどの場合、* これで全く大丈夫* です。
353
353
私たちが書いたコードをコンパイラに説明するために丸一日費やさなくてもいいからです。
0 commit comments