Я пытаюсь преобразовать HashSet<String>
в отсортированный вектор, который затем можно join
редактировать с запятыми:
use std::collections::HashSet;
fn main() {
let mut hs = HashSet::<String>::new();
hs.insert(String::from("fee"));
hs.insert(String::from("fie"));
hs.insert(String::from("foo"));
hs.insert(String::from("fum"));
let mut v: Vec<&String> = hs.iter().collect();
v.sort();
println!("{}", v.join(", "));
}
Это не скомпилируется:
error[E0599]: no method named `join` found for struct `std::vec::Vec<&std::string::String>` in the current scope
--> src/main.rs:13:22
|
13 | println!("{}", v.join(", "));
| ^^^^ method not found in `std::vec::Vec<&std::string::String>`
Я понимаю, почему я не могу присоединиться к Vec<&String>
, но как вместо этого преобразовать HashSet
в Vec<String>
, чтобы его можно было объединить?
Примеры, приведенные в Что идиоматический c способ печати итератора, разделенного пробелами в Rust? , похоже, не применяется, потому что итератор для Args
возвращает String
значений, в отличие от итератора для HashSet
, который возвращает &String
.