为什么Rust有String和str?String和之间有什么区别str?什么时候使用String而不是str反之亦然?其中一个被弃用了吗?
.to_string()当我需要一个字符串时,有什么方法可以避免调用吗?例如:
fn func1(aaa: String) -> ....
Run Code Online (Sandbox Code Playgroud)
而不是
func1("fdsfdsfd".to_string())
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
func1(s"fdsfdsfd")
Run Code Online (Sandbox Code Playgroud) Rust中的String::from("")&"".to_string()有何不同?
在这两种情况下,堆栈和堆分配有什么区别吗?
我对文字和非文字之间的区别感到困惑(那些在堆上的,我不知道它们被称为什么).例如,以String类型为例:
我们已经看过字符串文字,其中字符串值被硬编码到我们的程序中.字符串文字很方便,但它们并不总是适合您想要使用文本的每种情况.一个原因是它们是不可改变的....
我不明白上面的内容,因为我们已经看到了这样一个例子:
let mut a = "a"; // this is String literal here, so sitting on the stack
a = "b";
println!("a is being changed to...{}", a); // this is the same String literal sitting on the stack?
Run Code Online (Sandbox Code Playgroud)
显然,文字在Rust中是可变的.两者之间有什么区别,除了文字进入堆栈这一事实,而非文字进入堆?
我试图理解为什么我不应该在我的代码中使用可变文字,考虑到堆栈比堆快.
// a is mutable literal
let mut a = "a";
a = "b";
// b is mutable 'non-literal'
let mut b = String::from("a");
b = String::from("b");
Run Code Online (Sandbox Code Playgroud)