Rustの所有権について
こんにちは、 @kz_morita です。
今回は Rust の所有権について自分の理解をまとめていきます。
所有権とは Rust では、値の所有者はただ1つの変数になります。例えば以下のようなコードでは変数 x が Foo 型の値 の所有権を得ていることになります。
#[derive(Debug)]struct Foo{x: i32,}fn main(){letx=Foo{x: 1};println!("Hello, world! {:?}",x);}この x を、他の変数 y に代入してみます。
#[derive(Debug)]struct Foo{x: i32,}fn main(){letx=Foo{x: 1};let_y=x;println!("Hello, world! {:?}",x);}上記をビルドしてみると以下のようなコンパイルエラーになります。
error[E0382]: borrow of moved value: `x` --> src/main.rs:11:36 | 8 | let x = Foo { x: 1 }; | - move occurs because `x` has type `Foo`, which does not implement the `Copy` trait 9 | let _y = x; | - value moved here 10 | 11 | println!