我可以做以下事情:
fn main() {
let vec = vec!["first", "last"];
println!("{}", vec.join(", "));
}
Run Code Online (Sandbox Code Playgroud)
它给出了这个输出:
第一,最后
如果我尝试使用join
地图类型,则会失败:
错误[E0599]:没有为当前范围中的
join
类型命名的方法std::collections::HashSet<&str>
您可以将 a 转换HashSet
为 an Iterator
,收集它然后使用.join()
:
use std::collections::HashSet;
fn main() {
let mut books = HashSet::new();
books.insert("A Dance With Dragons");
books.insert("To Kill a Mockingbird");
books.insert("The Odyssey");
books.insert("The Great Gatsby");
println!("{}", books.into_iter().collect::<Vec<&str>>().join(", "));
}
Run Code Online (Sandbox Code Playgroud)
您可以对 a 执行相同的操作HashMap
- 您只需要提取它.keys()
或.values()
首先提取它,具体取决于您要加入的那个。
更有效率,您可以使用itertools加入迭代器而不将其收集到Vec
第一个:
extern crate itertools;
use std::collections::HashSet;
use itertools::Itertools;
fn main() {
let hash_set: HashSet<_> = ["first", "last"].iter().collect();
// Either of
println!("{}", hash_set.iter().join(", "));
println!("{}", itertools::join(&hash_set, ", "));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
708 次 |
最近记录: |