@@ -13,7 +13,7 @@ the scope it's valid for.
1313
1414Rust は今まで説明してきたルールを* ライフタイム* を使って強制します。
1515ライフタイムとは、要するにプログラム中のスコープの名前です。
16- リファレンスと、リファレンスを含むものとは、有効なスコープを示すライフタイムでタグづけられています 。
16+ 参照と、参照を含むものとは、有効なスコープを示すライフタイムでタグ付けられています 。
1717
1818<!--
1919Within 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
7979likely desugar to the following:
8080-->
8181
82- ボローチェッカーは 、ライフタイムの長さを最小にしようとするので、
82+ 借用チェッカは 、ライフタイムの長さを最小にしようとするので、
8383これは次のように脱糖されるでしょう。
8484
8585``` rust,ignore
@@ -109,7 +109,7 @@ Actually passing references to outer scopes will cause Rust to infer
109109a larger lifetime:
110110-->
111111
112- リファレンスを外のスコープに返す場合は 、Rust はより大きいライフタイムを推論することになります。
112+ 参照を外のスコープに返す場合は 、Rust はより大きいライフタイムを推論することになります。
113113
114114``` rust
115115let x = 0 ;
@@ -124,7 +124,7 @@ z = y;
124124 'b: {
125125 let z: &'b i32;
126126 'c: {
127- // ここでは 'b を使う必要があります。なぜならこのリファレンスは
127+ // ここでは 'b を使う必要があります。なぜならこの参照は
128128 // スコープ `b に渡されるからです。
129129 let y: &'b i32 = &'b x;
130130 z = y;
@@ -138,7 +138,7 @@ z = y;
138138# Example: references that outlive referents
139139-->
140140
141- # 例:参照先より長く生きるリファレンス
141+ # 例:参照先より長く生きる参照
142142
143143<!--
144144Alright, 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
177177order.
178178-->
179179
180- ` as_str ` のシグネチャは、* ある* ライフタイムを持つ u32 へのリファレンスをとり 、
181- そのリファレンスと * 同じ長さだけ* 生きる str へのリファレンスを生成することを約束します 。
180+ ` as_str ` のシグネチャは、* ある* ライフタイムを持つ u32 への参照をとり 、
181+ その参照と * 同じ長さだけ* 生きる str への参照を生成することを約束します 。
182182このシグネチャが問題になるかもしれないと、すでに話しました。
183- このシグネチャは、引数の u32 を指すリファレンスが生成されたスコープか 、もしくは* それより以前のスコープ* で、str を探すことを意味します。これはなかなか難しい注文です。
183+ このシグネチャは、引数の u32 を指す参照が生成されたスコープか 、もしくは* それより以前のスコープ* で、str を探すことを意味します。これはなかなか難しい注文です。
184184
185185<!--
186186We 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
193193up in our face.
194194-->
195195
196- それから文字列 ` s ` を計算し、そのリファレンスを返します 。
197- この関数は、返されるリファレンスが ` 'a ` より長生きすることを約束しているので、このリファレンスのライフタイムとして ` 'a ` を使うことを推論します。
196+ それから文字列 ` s ` を計算し、その参照を返します 。
197+ この関数は、返される参照が ` 'a ` より長生きすることを約束しているので、この参照のライフタイムとして ` 'a ` を使うことを推論します。
198198残念なことに、` s ` はスコープ ` 'b ` の中で定義されているので、
199199この推論が妥当になるためには、` 'b ` が ` 'a ` を含んでいなくてはなりません。
200200ところがこれは明らかに成立しません。` 'a ` はこの関数呼び出しそものを含んでいるからです。
201- 結局、この関数は参照先より長生きするリファレンスを生成してしまいました 。
202- そしてこれは* 文字通り* 、リファレンスがやってはいけないことの一番目でした 。
201+ 結局、この関数は参照先より長生きする参照を生成してしまいました 。
202+ そしてこれは* 文字通り* 、参照がやってはいけないことの一番目でした 。
203203コンパイラは正当に怒りだします。
204204
205205<!--
@@ -271,7 +271,7 @@ our implementation *just a bit*.)
271271# Example: aliasing a mutable reference
272272-->
273273
274- # 例:可変リファレンスの別名付け
274+ # 例:可変参照の別名付け
275275
276276<!--
277277How about the other example:
@@ -312,9 +312,9 @@ violate the *second* rule of references.
312312
313313これは、すこし分かりにくいですが面白い問題です。
314314私たちは、Rust が次のような理由で、このプログラムを拒否するだろうと思っています。
315- つまり、` push ` するために ` data ` への可変リファレンスを取ろうとするとき 、
316- ` data ` の子孫への共有リファレンス ` x ` が生存中です。
317- これは可変リファレンスの別名となり、リファレンスの * 二番目* のルールに違反します。
315+ つまり、` push ` するために ` data ` への可変参照を取ろうとするとき 、
316+ ` data ` の子孫への共有参照 ` x ` が生存中です。
317+ これは可変参照の別名となり、参照の * 二番目* のルールに違反します。
318318
319319<!--
320320However 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!
327327-->
328328
329329ところが、Rust がこのプログラムを悪いと推論するやり方は* 全く違う* のです。
330- Rust は、` x ` が ` data ` の部分パスへのリファレンスであることは理解しません 。
330+ Rust は、` x ` が ` data ` の部分パスへの参照であることは理解しません 。
331331Rust は Vec のことなど何も知らないのです。
332332Rust に* 見えている* のは、` x ` は println! のためにスコープ ` 'b ` の中で生存しなくてはならないことです。
333- さらに、` Index::index ` のシグネチャは、` data ` を参照するリファレンスが
333+ さらに、` Index::index ` のシグネチャは、` data ` を参照する参照が
334334スコープ ` 'b ` の中で生存することを要求します。
335335` push ` を呼び出すときに、` &'c mut data ` を取ろうとすることを Rust は理解します。
336336Rust はスコープ ` 'c ` が スコープ ` 'b ` に含まれていることを知っているので、
@@ -347,7 +347,7 @@ correct with respect to Rust's *true* semantics are rejected because lifetimes
347347are too dumb.
348348-->
349349
350- ここでは、ライフタイムをチェックするシステムは、私たちが維持したいリファレンスの意味論に比べて
350+ ここでは、ライフタイムをチェックするシステムは、私たちが維持したい参照の意味論に比べて
351351とても荒いことを見てきました。
352352ほとんどの場合、* これで全く大丈夫* です。
353353私たちが書いたコードをコンパイラに説明するために丸一日費やさなくてもいいからです。
0 commit comments