为什么我需要 to_string 函数的参考?

Pyt*_*tai 2 string integer rust

我是 Rust 新手。在尝试连接字符串文字和整数时,由于“to_string”函数,我遇到了许多错误。之后意识到我需要在整数前面放置一个引用/与号(&)。但是,我不明白为什么。你能解释一下为什么我需要在 to_string 函数的整数前面放置一个参考符号吗?我在下面写了一个示例代码。

fn main() {
    let number = 42;
    let text = "The answer is";
    let result = text.to_owned() + " " + &number.to_string();
    println!("{}", result);
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*man 5

因为+字符串的运算符采用Stringand&str而不是Stringand String,因为这就是std::ops::Add实现所采用的

这是因为要有效地连接字符串,您需要拥有其中一个字符串,因此我们可以重用其缓冲区并可能避免分配,但您不需要拥有另一个字符串,一个引用就足够了。从技术上讲,也没有理由impl Add<String> for &str不能提供,它只是不存在。