LoginSignup
2
2

More than 5 years have passed since last update.

Rustのライフタイムの記法がわからなかった

Last updated at Posted at 2018-07-17

以下のようなコードの意味がわからなくて困りました。

/// 指定された参照の指す値を二倍し、参照をそのまま返す。
fn hoge<'a>(n: &'a mut usize) -> &'a usize {
    *n *= 2;
    n
}

hogeの横の<'a>を見て、関数のライフタイムって何だ?と思いました。

答え

この<'a>は単にこれから'aというライフタイムを表す変数を使うという宣言です。
普通のジェネリクスの型変数と同じです。

つまり上のコードにおいては「返り値のライフタイムは引数のnのライフタイムに一致する」ということなのでした。

プログラミング言語Rustにもちゃんとそう書いてあるのですが、自分は誤読してしまいました。第二版 (和訳) ではそのような誤解がしづらくなっているようなので、これから学ぶ人はそちらをおすすめします。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2