をより長く存続するために失敗すると書いて私は、元のツリーが破壊されるので、関数が返したときに、その左回転が原因lifetime parameter contravarianceのそれよりも長持ちすることができないことを理解左回転は左回転で木を交換する機能を、私は平衡二分探索木を実装しようとしてるオリジナル
error: borrowed value does not live long enough
--> bst.rs:18:27
|
18 | l: Some(& BST {l: self.l, r: y.l}),
| ^^^^^^^^^^^^^^^^^^^^^^^ temporary value created here
19 | r: y.r
20 | }
| - temporary value only lives until here
|
note: borrowed value must be valid for the lifetime 'a as defined on the block at 7:36...
--> bst.rs:7:37
|
7 | fn left_rotate(self) -> BST<'a> {
| ^
:次のエラーでrustc bst.rs
結果を使用してこの例をコンパイルします。私の意図は、関数が元のツリーを消費して、左のローテーションが元のツリーが持つ関数が呼び出されていなかった寿命を継承するように、左のローテーションを返すことでした。これは錆で可能ですか?そうでない場合は、ツリー置換をサポートするという私の目標を達成する最も単純なデザインは何ですか?私の好みは、Rust標準ライブラリに頼るのを避け、自分自身の寿命を管理することを学ぶことです。
私はRustの生涯に関する経験が不足していますのでご了承ください。私の背景知識は、ほとんどがC++やMLスタイルの言語です。
* * 'rustc bst.rs'を使用して - 私は** **強く貨物を使用してお勧めしたいです。基本的に 'rustc'を直接使う理由はほとんどありません。 – Shepmaster
も参照してください[関数で作成された変数への参照を返す方法はありますか?](http://stackoverflow.com/q/32682876/155423)、問題の根本です。 – Shepmaster