2013-04-14 194 views
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!使用在這種情況下只會帶來不必要的混亂。

回答

6

默認情況下,字符串文字具有靜態生存期,並且不可能連接唯一向量和靜態向量。採用獨特的文本字符串幫助:

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

只是爲了附加到上面的回答,只要在最右邊的字符串類型的〜海峽,那麼你可以在任何類型的字符串添加到它。

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

生鏽的最新版本(0.11),波浪(~)運營商已被棄用。

這裏有一個如何與0.11版本修復一個例子:

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

對不起,我不明白怎麼你的答案適用於這個問題。你能展示如何實現他的實際abcd和消息示例? – Doradus

+0

爲什麼String可以與&str連接,但不是2個字符串? – CMCDragonkai