Rust で文字列を宣言する 3 つの方法の違いは何ですか? 質問する

Rust で文字列を宣言する 3 つの方法の違いは何ですか? 質問する
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

参照:

おすすめ記事