将字符串字面值与另一个字符串连接

4

我无法将字符串变量与字符串字面量连接起来,是否有什么原因?下面是代码:

fn main() {
    let x = ~"abcd";
    io::println("Message: " + x);
}

会产生以下错误:

test2.rs:3:16: 3:31 error: binary operation + cannot be applied to type `&'static str`
test2.rs:3     io::println("Message: " + x);
                           ^~~~~~~~~~~~~~~
error: aborting due to previous error

我想这是一种相当基本和非常常见的模式,使用fmt! 在这种情况下只会带来不必要的混乱。

3个回答

7

在最新版本的 Rust(0.11)中,波浪线 (~) 运算符已被弃用。

以下是如何使用 0.11 版本进行修复的示例:

let mut foo = "bar".to_string();
foo = foo + "foo";

抱歉,我不明白如何将您的答案应用于问题。您能演示一下如何实现他的实际abcd和Message示例吗? - Doradus
为什么String可以与&str连接,但不能连接两个Strings? - CMCDragonkai

6

默认情况下,字符串字面量具有静态生存期,并且不可能连接唯一和静态向量。使用唯一的字面量字符串可以解决这个问题:

fn main() {
    let x = ~"abcd";
    io::println(~"Message: " + x);
}

2

补充以上答案,只要最右边的字符串是~str类型,您就可以添加任何类型的字符串。

let x = ~"Hello" + @" " + &"World" + "!";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接