我刚看了the Rust documentation about string data types,其中说明了:
Rust虽然只有
&str
个。String
是堆分配的 串。此字符串是可增长的,并且也保证为UTF-8。
麻烦:我想显式声明变量类型,如下所示:
let mystring : &str = "Hello"; // this works
let mystring : String = "Hello"; // this does not. Why?
答案 0 :(得分:8)
因为&str
不是String
。
有几种方法可以使字符串文字成为String
实例:
let mystring = String::from("Hello");
// ..or..
let mystring: String = "Hello".into();
// ..or..
let mystring: String = "Hello".to_string();
答案 1 :(得分:5)
这是因为第二个mystring
不是String
,而是&'static str
,即静态分配的字符串文字。
为了以这种方式创建String
(来自文字),您需要撰写let mystring = String::from("Hello")
(Rust docs)。