String
sのベクトルに対する "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);
関連:
String
sのベクトルに対する "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);
関連:
回答:
Rust 1.3.0以降でjoin
は、次のものが利用可能です。
fn main() {
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = string_list.join("-");
assert_eq!("Foo-Bar", joined);
}
1.3.0より前は、このメソッドが呼び出されていましたconnect
。
let joined = string_list.connect("-");
メソッドは標準ライブラリpreludeによって自動的にインポートされるため、何もインポートする必要がないことに注意してください。
use
特性はプレリュードにあるので、明示的にする必要はありません。
join
がありitertools
ます。
Wilfredによって言及SliceConcatExt::connect
されたように、バージョン1.3.0以降では非推奨になりましたSliceConcatExt::join
。
let joined = string_list.join("-");
イテレータに参加する、itertools
クレートからも呼び出される関数join
があります。
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)
}
join
でしたが、フォーマットアルゴリズムを最適化する方法ではありませんでしたか?
SliceConcatExt
が、毎晩のみです。