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

Odpowiedz

10
let hello1 = "Hello, world!"; 

Stwarza to kawałek ciąg (&str). W szczególności, &'static str, kawałek łańcucha, który żyje przez cały czas trwania programu. Nie przydzielono pamięci sterty; dane ciągu znaków znajdują się w pliku binarnym samego programu.

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

ta wykorzystuje maszynerię formatowania formatowania żadnego typ, który implementuje Display, tworząc własnością, przydzieloną ciąg (String). W wersjach Rust przed 1.9.0 (szczególnie z powodu this commit), jest to wolniejsze niż bezpośrednia konwersja przy użyciu String::from. W wersji 1.9.0 i później wywołanie .to_string() na literał łańcuchowy ma taką samą prędkość, jak String::from.

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

Ten kawałek konwertuje ciąg znaków na własność, przydzielonej ciąg (String) w sposób efektywny.

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

To samo co String::from.

Zobacz także:

Powiązane problemy