Skip to content

Commit 28921b1

Browse files
authored
Fix lifetimes.md (#22)
* Obey to translation table * Fix conversion error * Obey to translation table
1 parent 28bc83f commit 28921b1

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

src/lifetimes.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ the scope it's valid for.
1313

1414
Rust は今まで説明してきたルールを*ライフタイム*を使って強制します。
1515
ライフタイムとは、要するにプログラム中のスコープの名前です。
16-
リファレンスと、リファレンスを含むものとは、有効なスコープを示すライフタイムでタグづけられています
16+
参照と、参照を含むものとは、有効なスコープを示すライフタイムでタグ付けられています
1717

1818
<!--
1919
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
7979
likely 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
109109
a larger lifetime:
110110
-->
111111

112-
リファレンスを外のスコープに返す場合は、Rust はより大きいライフタイムを推論することになります。
112+
参照を外のスコープに返す場合は、Rust はより大きいライフタイムを推論することになります。
113113

114114
```rust
115115
let 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
<!--
144144
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
177177
order.
178178
-->
179179

180-
`as_str` のシグネチャは、*ある*ライフタイムを持つ u32 へのリファレンスをとり
181-
そのリファレンスと*同じ長さだけ*生きる str へのリファレンスを生成することを約束します
180+
`as_str` のシグネチャは、*ある*ライフタイムを持つ u32 への参照をとり
181+
その参照と*同じ長さだけ*生きる str への参照を生成することを約束します
182182
このシグネチャが問題になるかもしれないと、すでに話しました。
183-
このシグネチャは、引数の u32 を指すリファレンスが生成されたスコープか、もしくは*それより以前のスコープ*で、str を探すことを意味します。これはなかなか難しい注文です。
183+
このシグネチャは、引数の u32 を指す参照が生成されたスコープか、もしくは*それより以前のスコープ*で、str を探すことを意味します。これはなかなか難しい注文です。
184184

185185
<!--
186186
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
193193
up 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
<!--
277277
How 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
<!--
320320
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!
327327
-->
328328

329329
ところが、Rust がこのプログラムを悪いと推論するやり方は*全く違う*のです。
330-
Rust は、`x``data` の部分パスへのリファレンスであることは理解しません
330+
Rust は、`x``data` の部分パスへの参照であることは理解しません
331331
Rust は Vec のことなど何も知らないのです。
332332
Rust に*見えている*のは、`x` は println! のためにスコープ `'b` の中で生存しなくてはならないことです。
333-
さらに、`Index::index` のシグネチャは、`data` を参照するリファレンスが
333+
さらに、`Index::index` のシグネチャは、`data` を参照する参照が
334334
スコープ `'b` の中で生存することを要求します。
335335
`push` を呼び出すときに、`&'c mut data` を取ろうとすることを Rust は理解します。
336336
Rust はスコープ `'c` が スコープ `'b` に含まれていることを知っているので、
@@ -347,7 +347,7 @@ correct with respect to Rust's *true* semantics are rejected because lifetimes
347347
are too dumb.
348348
-->
349349

350-
ここでは、ライフタイムをチェックするシステムは、私たちが維持したいリファレンスの意味論に比べて
350+
ここでは、ライフタイムをチェックするシステムは、私たちが維持したい参照の意味論に比べて
351351
とても荒いことを見てきました。
352352
ほとんどの場合、*これで全く大丈夫*です。
353353
私たちが書いたコードをコンパイラに説明するために丸一日費やさなくてもいいからです。

0 commit comments

Comments
 (0)