Reputation: 127711
Is there some reason why I cannot concatenate a string literal with a string variable? The following code:
fn main() {
let x = ~"abcd";
io::println("Message: " + x);
}
gives this error:
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
I guess this is a pretty basic and very common pattern, and usage of fmt!
in such cases only brings unnecessary clutter.
Upvotes: 4
Views: 5772
Reputation: 127711
By default string literals have static lifetime, and it is not possible to concatenate unique and static vectors. Using unique literal string helped:
fn main() {
let x = ~"abcd";
io::println(~"Message: " + x);
}
Upvotes: 6
Reputation: 4551
With the latest version of Rust (0.11), the tilde (~
) operator is deprecated.
Here's an example of how to fix it with version 0.11:
let mut foo = "bar".to_string();
foo = foo + "foo";
Upvotes: 7
Reputation: 1576
Just to addon to the above answer, as long as the right most string is of the type ~str then you can add any kind of string to it.
let x = ~"Hello" + @" " + &"World" + "!";
Upvotes: 2