Rust支持类似Ruby的字符串插值吗?

时间:2014-01-24 04:47:58

标签: rust string-interpolation

在Ruby中,我可以做到这一点。

aaa = "AAA"
bbb = "BBB #{aaa}"

puts(bbb)

> "BBB AAA"

这种语法的要点是消除重复,并让它感觉像一个shell脚本 - 非常适合繁重的字符串操作。

Rust支持这个吗?或者有计划支持这个?或者有一些可以模仿的功能?

2 个答案:

答案 0 :(得分:33)

Rust有字符串格式。

fn main() {
    let a = "AAA";
    let b = format!("BBB {}", a);
    println(b);
}
// output: BBB AAA

在Rust版本中,没有额外的重复,但您必须显式调用format!(),并且插入的值与字符串分开。这与Python和C#开发人员习惯使用的方式基本相同,理由是这种技术可以更轻松地将代码本地化为其他语言。

Rust邮件列表有一个存档的讨论([rust-dev] Suggestions),其中讨论了不同类型的字符串插值。

答案 1 :(得分:12)

RFC 2795已被接受,但尚未实施。提议的语法:

let (person, species, name) = ("Charlie Brown", "dog", "Snoopy");

// implicit named argument `person`
print!("Hello {person}");

// implicit named arguments `species` and `name`
format!("The {species}'s name is {name}.");

我希望很快能看到它。