hiro99ma blog

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
tags: Rust言語

 
About me
About me
comment
Comment Form
🏠
Top page
GitHub
GitHub
Twitter
X/Twitter
My page
Homepage