rust: スカラ型に所有権移動はあるのか?
2025/10/31
「所有権」と「昇龍拳」は似てるな、と益体もないことを思った(やったことないけど)。
プリミティブなスカラ型
私は「プリミティブ型」を struct とか class みたいなものではなく、言語が元々から持っている型、というイメージで使っている。
こちらのリンクではさらに「スカラ型」と「複合型」に分類されている。
気になったのは、スカラ型の変数は所有権の移動とかなさそうだけどどうなんだ?である。
borrow() の引数は & を付けていないがそれ以降でも渡した変数は使えているのでたぶん移動していない。
fn main() {
let a: i32 = 10;
let b = borrow(a);
let c = a * b;
println!("a={a}, b={b}, c={c}");
}
pub fn borrow(r: i32) -> i32 {
r * 2
}
String はダメだった。format! のところで d が使えない。
fn main() {
let d = "hello".to_string();
let e = borrow2(d);
let f = format!("{d}{e}");
println!("d={d}, e={e}, f={f}");
}
pub fn borrow2(s: String) -> String {
s + "!"
}
writer: hiro99ma