Rust Standard Library Cookbookを読み始めました。
この本ではRustの文字列連結として3つの方法が紹介されています。
moveによる連結
一番標準の方法。わかりやすく効率も良いが、連結後はmoveによりhelloは使えなくなる。
fn by_moving() { let hello = "hello ".to_string(); let world = "world"; let hello_world = hello + world; println!("{}", hello_world); }
helloはStringで、worldが&str。この2つを連結するとStringになるというのもよくわかってない。(なんで to_string()が必要なの?)
cloneによる連結
clone()を使うことで、一時変数が作られ、それをmoveすることで文字列を連結している。連結後もhelloが使えることがポイント。
fn by_cloning() { let hello = "hello".to_string(); let world = "world"; let hello_world = hello.clone() + world; println!("{} ", hello_world); }
mutingによる連結
helloをmutableで宣言して、push_strを使う方法。エレガントじゃないらしい。
fn by_mutating() { let mut hello = "hello".to_string(); let world = "world"; hello.push_str(world); println!("{} ", hello); }
今まで勉強したプログラミング言語の中で一番文字列がめんどくさい。
元のソースはこちらです。 github.com