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 されてる
文字列は Copy と Move どちらもある
Rust の文字列はstr
とString
の二つがある。
str はプリミティブ型なので所有権の移動は行われない。
String は所有権が移動する