let hello1 = "Hello, world!";
let hello2 = "Hello, world!".to_string();
let hello3 = String::from("Hello, world!");
ベストアンサー1
let hello1 = "Hello, world!";
これにより、文字列スライス(&str
)。具体的には、&'static str
プログラムの実行中ずっと存続する文字列スライス です。ヒープ メモリは割り当てられず、文字列のデータはプログラム自体のバイナリ内に存在します。
let hello2 = "Hello, world!".to_string();
これはフォーマット機構を使用してフォーマットしますどれでもを実装する型でDisplay
、所有され割り当てられた文字列(String
)を作成します。Rustのバージョン1.9.0より前(特にこのコミット) を使用すると、 を使用して直接変換するよりも遅くなりますString::from
。バージョン 1.9.0 以降では、.to_string()
文字列リテラルで を呼び出すと、 と同じ速度になりますString::from
。
let hello3 = String::from("Hello, world!");
これは、文字列スライスを所有され割り当てられた文字列 ( String
) に効率的に変換します。
let hello4 = "hello, world!".to_owned();
と同じString::from
。
参照: