我无法在Strings 的向量上找到"join"运算符的Rust等价物.我有一个Vec<String>,我想加入他们作为一个单身String:
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = something::join(string_list,"-");
assert_eq!("Foo-Bar", joined);
Run Code Online (Sandbox Code Playgroud)
Mat*_*ewG 108
在Rust 1.3.0及更高版本中,SliceConcatExt::join可用:
fn main() {
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = string_list.join("-");
assert_eq!("Foo-Bar", joined);
}
Run Code Online (Sandbox Code Playgroud)
在1.3.0之前,您可以使用SliceConcatExt::connect:
let joined = string_list.connect("-");
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要任何导入,因为标准库前缀会自动导入方法.
Dan*_*gen 22
正如Wilfred所述,SliceConcatExt::connect自版本1.3.0以来已被弃用,赞成SliceConcatExt::join:
let joined = string_list.join("-");
Run Code Online (Sandbox Code Playgroud)
extern crate itertools; // 0.7.8
use itertools::free::join;
use std::fmt;
pub struct MyScores {
scores: Vec<i16>,
}
impl fmt::Display for MyScores {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.write_str("MyScores(")?;
fmt.write_str(&join(&self.scores[..], &","))?;
fmt.write_str(")")?;
Ok(())
}
}
fn main() {
let my_scores = MyScores {
scores: vec![12, 23, 34, 45],
};
println!("{}", my_scores); // outputs MyScores(12,23,34,45)
}
Run Code Online (Sandbox Code Playgroud)