Skip to content

Commit 2f07abf

Browse files
committed
[ch10-03] 原文の同期部分を翻訳
1 parent 5554425 commit 2f07abf

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/ch10-03-lifetime-syntax.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ parameters to ensure the actual references used at runtime will definitely be
1717
valid.
1818
-->
1919

20-
第4章の「参照と借用」節で議論しなかった詳細の一つに、Rustにおいて参照は全てライフタイムを保持するということがあります。
20+
21+
第4章の[「参照と借用」][references-and-borrowing]節で議論しなかった詳細の一つに、Rustにおいて参照は全てライフタイムを保持するということがあります。
2122
ライフタイムとは、その参照が有効になるスコープのことです。多くの場合、型が推論されるように、
2223
大体の場合、ライフタイムも暗黙的に推論されます。複数の型の可能性があるときには、型を注釈しなければなりません。
2324
同様に、参照のライフタイムがいくつか異なる方法で関係することがある場合には注釈しなければなりません。
@@ -38,7 +39,6 @@ the concepts.
3839
ライフタイムの概念は、他のプログラミング言語の道具とはどこか異なり、間違いなく、
3940
Rustで一番際立った機能になっています。この章では、ライフタイムの全体を解説することはしませんが、
4041
ライフタイム記法が必要となる最も一般的な場合について議論しますので、ライフタイムの概念について馴染むことができるでしょう。
41-
もっと詳しく知るには、第19章の「高度なライフタイム」節を参照してください。
4242

4343
<!--
4444
### Preventing Dangling References with Lifetimes
@@ -283,9 +283,8 @@ ones we want.
283283

284284
関数に取ってほしい引数が文字列スライス、つまり参照であることに注意してください。
285285
何故なら、`longest`関数に引数の所有権を奪ってほしくないからです。
286-
この関数に`String`のスライス(変数`string1`に格納されている型)と文字列リテラル(変数`string2`が含むもの)を受け取らせたいのです。
287286
リスト10-20で使用している引数が、我々が必要としているものである理由についてもっと詳しい議論は、
288-
第4章の「引数としての文字列スライス」節をご参照ください。
287+
第4章の[「引数としての文字列スライス」][string-slices-as-parameters]節をご参照ください。
289288

290289
<!--
291290
If we try to implement the `longest` function as shown in Listing 10-21, it
@@ -509,7 +508,10 @@ substituted for `'a` that will satisfy this signature.
509508
これで関数シグニチャは、何らかのライフタイム`'a`に対して、関数は2つの引数を取り、
510509
どちらも少なくともライフタイム`'a`と同じだけ生きる文字列スライスであるとコンパイラに教えるようになりました。
511510
また、この関数シグニチャは、関数から返る文字列スライスも少なくともライフタイム`'a`と同じだけ生きると、
512-
コンパイラに教えています。これらの制約は、まさに私たちがコンパイラに保証してほしかったものです。
511+
コンパイラに教えています。
512+
実際には、`longest`関数が返す参照のライフタイムは、渡された参照のうち、小さい方のライフタイムと同じであるという事です。
513+
これらの制約は、まさに私たちがコンパイラに保証してほしかったものです。
514+
513515
この関数シグニチャでライフタイム引数を指定する時、渡されたり、返したりした、いかなる値のライフタイムも変更していないことを思い出してください。
514516
むしろ、借用チェッカーは、これらの制約を守らない値全てを拒否するべきと指定しています。
515517
`longest`関数は、`x``y`の正確な生存期間を知っている必要はなく、
@@ -1025,7 +1027,7 @@ to `fn` definitions as well as `impl` blocks.
10251027
コンパイラは3つの規則を活用し、明示的な注釈がない時に、参照がどんなライフタイムになるかを計算します。
10261028
最初の規則は入力ライフタイムに適用され、2番目と3番目の規則は出力ライフタイムに適用されます。
10271029
コンパイラが3つの規則の最後まで到達し、それでもライフタイムを割り出せない参照があったら、
1028-
コンパイラはエラーで停止します。
1030+
コンパイラはエラーで停止します。これらのルールは`fn`の定義にも`impl`ブロックにも適用されます。
10291031

10301032
<!--
10311033
The first rule is that each parameter that is a reference gets its own lifetime
@@ -1265,7 +1267,7 @@ reference *can* live for the entire duration of the program. All string
12651267
literals have the `'static` lifetime, which we can annotate as follows:
12661268
-->
12671269

1268-
議論する必要のある1種の特殊なライフタイムが、`'static`であり、これはプログラム全体の期間を示します
1270+
議論する必要のある1種の特殊なライフタイムが、`'static`であり、これは、この参照がプログラムの全期間生存*できる*事を意味します
12691271
文字列リテラルは全て`'static`ライフタイムになり、次のように注釈できます:
12701272

12711273
```rust
@@ -1378,15 +1380,17 @@ the [Rust Reference][reference]. But next, you’ll learn how to write tests in
13781380
Rust so you can make sure your code is working the way it should.
13791381
-->
13801382

1383+
1384+
1385+
1386+
13811387
信じるかどうかは自由ですが、この章で議論した話題にはもっともっと学ぶべきことがあります:
13821388
第17章ではトレイトオブジェクトを議論します。これはトレイトを使用する別の手段です。
1383-
第19章では、ライフタイム注釈が関わるもっと複雑な筋書きと何か高度な型システムの機能を講義します。
1389+
非常に高度な筋書きの場合でのみ必要になる、ライフタイム注釈が関わる、もっと複雑な筋書きもあります。 それらについては、[Rust Reference][reference]をお読みください。
13841390
ですが次は、コードがあるべき通りに動いていることを確かめられるように、Rustでテストを書く方法を学びます。
13851391

1386-
<!--
13871392
[references-and-borrowing]:
1388-
ch04-02-references-and-borrowing.html#references-and-borrowing
1393+
ch04-02-references-and-borrowing.html#参照と借用
13891394
[string-slices-as-parameters]:
1390-
ch04-03-slices.html#string-slices-as-parameters
1395+
ch04-03-slices.html#引数としての文字列スライス
13911396
[reference]: ../reference/index.html
1392-
-->

0 commit comments

Comments
 (0)