我如何连接以下类型的组合:

STR和STR String和str 字符串和字符串


当前回答

fn main() {
    let a = String::from("Name");
    let b = "Pkgamer";
    println!("{}",a+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

从Rust 1.58开始,你还可以像这样连接两个或多个变量:format!("{a}{b}{c}")。这与格式基本相同!("{}{}{}", a, b, c),但更短一点,(可以说)更容易阅读。这些变量可以是String, &str(也可以是其他非字符串类型)。结果是一个字符串。 更多信息请看这个。

在Rust中连接字符串的简单方法

Rust中有各种方法可以连接字符串

第一种方法(使用concat!()):

fn main() {
    println!("{}", concat!("a", "b"))
}

上述代码的输出是:

ab


第二个方法(使用push_str()和+运算符):

fn main() {
    let mut _a = "a".to_string();
    let _b = "b".to_string();
    let _c = "c".to_string();

    _a.push_str(&_b);

    println!("{}", _a);

    println!("{}", _a + &_c);
}

上述代码的输出是:

接 abc


第三种方法(使用格式!()):

fn main() {
    let mut _a = "a".to_string();
    let _b = "b".to_string();
    let _c = format!("{}{}", _a, _b);

    println!("{}", _c);
}

上述代码的输出是:

ab

看看它,并在Rust操场上进行实验。

连接两个字符串:

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
}

我认为这里也应该提到concat方法和+:

assert_eq!(
  ("My".to_owned() + " " + "string"),
  ["My", " ", "string"].concat()
);

还有concat!宏,但仅适用于字面量:

let s = concat!("test", 10, 'b', true);
assert_eq!(s, "test10btrue");