Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix unbounded-lifetimes.md #25

Merged
merged 1 commit into from
Jun 5, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/unbounded-lifetimes.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ will fail to typecheck, but the unbound lifetime will perfectly mold into
lifetime can be regarded as `'static`.
-->

アンセーフなコードはときに、リファレンスやライフタイムを何も無いところから生み出したりします
アンセーフなコードはときに、参照やライフタイムを何も無いところから生み出したりします
そのようなライフタイムは、*無制限* なライフタイムとして世界に登場します。
最もよくあるのは、生のポインタのデリファンレンスし、無制限のライフタイムを持つ参照を作り出すというケースです。
最もよくあるのは、生ポインタの参照外しをし、無制限のライフタイムを持つ参照を作り出すというケースです。
このライフタイムは、そのコンテキストが必要とするだけ大きくなります。そしてこれは `'static` よりも強力なしくみです。
`&'static &'a T` は型チェックをパスしませんが、無制限のライフタイムを使うと必要に応じて `&'a &'a T` となるからです。
しかし、ほとんどの意図と目的においては、無制限のライフタイムを `'static` と解釈できます。
Expand Down Expand Up @@ -68,5 +68,5 @@ in a function.

関数内部でライフタイムを制限することは、エラーを生みやすくなります。
ライフタイムを制限する安全で簡単な方法は、制限つきライフタイムの関数から返される値を使うことです。
しかし、これができない場合は、そのリファレンスを特定のライフタイムがついた場所に置くと良いでしょう
しかし、これができない場合は、その参照を特定のライフタイムがついた場所に置くと良いでしょう
残念ながら、関数内のすべてのライフタイムに名前をつけるのは不可能です。