我如何连接以下类型的组合:
STR和STR String和str 字符串和字符串
我如何连接以下类型的组合:
STR和STR String和str 字符串和字符串
当前回答
fn main() {
let a = String::from("Name");
let b = "Pkgamer";
println!("{}",a+b)
}
其他回答
fn main() {
let a = String::from("Name");
let b = "Pkgamer";
println!("{}",a+b)
}
从Rust 1.58开始,你还可以像这样连接两个或多个变量:format!("{a}{b}{c}")。这与格式基本相同!("{}{}{}", a, b, c),但更短一点,(可以说)更容易阅读。这些变量可以是String, &str(也可以是其他非字符串类型)。结果是一个字符串。 更多信息请看这个。
在Rust中默认都是关于内存管理和所有权和移动,我们通常不会看到像复制或深度复制 如果你试图连接字符串,那么左手边应该是可增长的字符串类型,应该是可变类型,右手边可以是正常的字符串字面量,也就是类型字符串切片
fn main (){
let mut x = String::from("Hello"); // type String
let y = "World" // type &str
println!("data printing -------> {}",x+y);
}
来自doc的官方声明,这是指向当你尝试使用arthmatic +运算符
连接两个字符串:
fn concat_string(a: String, b: String) -> String {
a + &b
}
Concat 2 &str:
fn concat_str(a: &str, b: &str) -> String {
a.to_string() + b
}
串插拼接
更新:截至2021年12月28日,这在Rust 1.58 Beta中可用。你不再需要Rust Nightly build来做字符串插值。(为后人保留答案的其余部分)。
RFC 2795发布于2019-10-27: 建议支持隐式参数,以完成许多人所知道的“字符串插值”——一种将参数嵌入到字符串中以连接它们的方法。
RFC: https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
最新版本可在此查阅: https://github.com/rust-lang/rust/issues/67984
在撰写本文时(2020-9-24),我认为该功能应该在Rust Nightly构建中可用。
这将允许您通过以下简写进行连接:
format_args!("hello {person}")
它等价于:
format_args!("hello {person}", person=person)
还有"ifmt"板条箱,它提供了自己的字符串插值:
https://crates.io/crates/ifmt