見出し画像

スーパー雑な Rust メモ : 文字列の引数 文字列の結合

せっかく Rust を勉強しようという熱が今あるんで、全くもって雑ですが、ごく個人的にメモした内容を note に載せておこうと思います。減るもんじゃないし。

関数に文字列の参照を渡すとき、引数の型は &str にしておくのが無難

fn main() {
    let s = "aaa".to_string();
    foo(&s);
    bar(&s);

    let s = "bbb";
    // foo(&s); // Error : expected struct `String`, found `&str`
    bar(&s);
}

fn foo(s: &String) {
    println!("{}", s);
}

fn bar(s: &str) {
    println!("{}", s);
}

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a1862112dffcaaaf3736867e97a38c85

引数として渡す値が &String 型でも &str 型でも、 &str で受け取る関数 bar の方は動作します。

文字列を整形したかったら + 演算子じゃなくて format! マクロを使っとけ

ffn main() {
    let s = "aaa".to_string();
    let t = "bbb".to_string();
    let st = format!("{s} + {t} = {s}{t}", s=s, t=t);
    println!("{}", st);
}

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=2f20553f88bf1d97447fda06abeee476

同じことを + 演算子でやろうとすると、ちょっと面倒くさい。

let st = String::from("") + &s + &String::from(" + ") + &t + &String::from(" = ") + &s + &t;

また気が向いたら別の内容も投稿します。

SN

参考図書


この記事が気に入ったらサポートをしてみませんか?