Rust を勉強していて、よくわからなくなったところのメモ(更新していくかも)
const
と static
の違いconst
・・・値を定義。static
・・・場所を定義。起動時に一度だけ初期化されるfn main(){ let name = String::from("Hello"); let name2 = name;
// error // println!("name is {}", name); println!("name2 is {}", name2);}
上記の error となっている箇所は、コンパイルエラーになってしまいます。
理由は変数 name のHello
という文字列の所有権がないためです。
変数の書き換えや利用を制限できる。
プリミティブ型とタプル型は所有権の移動がしない 上記二つの型は移動ではなく、Copy されてる
Rust の文字列はstr
とString
の二つがある。
str はプリミティブ型なので所有権の移動は行われない。
String は所有権が移動する