2016-05-10 4 views
7
let hello1 = "Hello, world!"; 
let hello2 = "Hello, world!".to_string(); 
let hello3 = String::from("Hello, world!"); 

答えて

10
let hello1 = "Hello, world!"; 

これは、列スライス&str)を作成します。特に、&'static strは、プログラムの全期間存続する文字列スライスです。ヒープメモリは割り当てられません。文字列のデータはプログラム自体のバイナリ内に存在します。

let hello2 = "Hello, world!".to_string(); 

これは所有し、割り当てられた文字列(String)を作成、Displayを実装任意タイプをフォーマットするフォーマッティング機械を使用します。 1.9.0より前のバージョンのRustでは(特にthis commitのため)、これはString::fromを使用して直接変換するよりも遅いです。バージョン1.9.0以降では、文字列リテラルで.to_string()を呼び出すと、String::fromと同じ速度になります。

let hello3 = String::from("Hello, world!"); 

これは、効率的に所有する、割り当てられた文字列(String)に文字列スライスを変換します。

let hello4 = "hello, world!".to_owned(); 

String::fromと同じ。

も参照してください:

関連する問題