let hello1 = "Hello, world!";
let hello2 = "Hello, world!".to_string();
let hello3 = String::from("Hello, world!");
7
A
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: