だれかこの例で (1') がダメで (3') が問題ない理由を教えて… https://gist.github.com/ubnt-intrepid/3cd3d3910b775e003dbe3de9eb0e1ff8 … MIRを見たら出力結果が同じっぽい…
-
-
Replying to @ubnt_intrepid
- (1')だとhogeと_borrowの寿命が一致するけど、(3')だと一致しなくていい - (3')の定義だと'fがselfの本来の寿命('sとする)より短い寿命('s: 'f)ならなんでもいいから かな・・・
1 reply 0 retweets 0 likes -
Replying to @termoshtt
つまり,ライフタイムの推論ルールとして「一意に定まらなければもっとも範囲が小さいものを選ぶ」という規則があれば挙動の説明ができるという事ですかね…
1 reply 1 retweet 1 like -
Replying to @ubnt_intrepid
個人的にはその理論で理解しています(正しいとは確認してない) ちなみにbazの定義は fn baz(&mut self) -> &'s str {} と同じなのでこの場合foo()の定義の方が不自然ですよね。
1 reply 0 retweets 0 likes -
-
Replying to @ubnt_intrepid
ちょっと修正を (1')で一致するのはhogeの寿命でなく、foo()を呼び出すために生成した&mut hogeの寿命と_borrow: &strの寿命ですね。だから_borrowが生きてる間は&mut参照が残ってhogeにアクセスできなくなる。
1 reply 0 retweets 0 likes
Replying to @termoshtt
それですね。多分 (2') も推論結果は (1') と同じになっているのではないかと思います(自信ないですが…)
11:42 AM - 5 Jun 2017
0 replies
0 retweets
1 like
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.