2016-09-11 2 views
2

Я только что прочитал the Rust documentation about string data types, который гласит:Объявление переменной типа `String` не работает

Ржавчина имеет более чем только &str с, хотя. A String представляет собой выделенную кучу строку . Эта строка является устойчивой, а также гарантируется UTF-8.

Проблема: Я хочу, чтобы явно объявить переменную типа, как следует:

let mystring : &str = "Hello"; // this works 
let mystring : String = "Hello"; // this does not. Why? 
+0

Почему downvotes? Ответы на эти вопросы помогли мне сразу понять Рурст. – Fusion

+0

Я не знаю, почему это происходит. Я думаю, что это хороший вопрос. – BurntSushi5

+0

Especialy, я пришел с языка высокого уровня. Так что ржавчина для меня довольно жесткая. – Fusion

ответ

7

Потому что &str не является String.

Есть несколько способов, которые вы можете сделать, что строковый литерал в String экземпляр, хотя:

let mystring = String::from("Hello"); 
// ..or.. 
let mystring: String = "Hello".into(); 
// ..or.. 
let mystring: String = "Hello".to_string(); 
4

Это потому, что второй mystring не String, а &'static str, т.е. статически размещенную строку буквальным.

Для того, чтобы создать String таким образом (из литерала), вам необходимо написать let mystring = String::from("Hello") (Rust docs).