Collections Rust:找不到结构'std::string::string'的名为'join'的方法`

Collections Rust:找不到结构'std::string::string'的名为'join'的方法`,collections,rust,compiler-errors,Collections,Rust,Compiler Errors,嗯,为什么不起作用 let numcities = 40; let mut file = std::fs::File::create(args[3].clone()).unwrap(); file.write((0..numcities).map(|i| i.to_string()).collect::<String>().join("->")).unwrap(); 让numcities=40; 让mut file=std::fs::file::crea

嗯,为什么不起作用

let numcities = 40;
let mut file = std::fs::File::create(args[3].clone()).unwrap();

file.write((0..numcities).map(|i| i.to_string()).collect::<String>().join("->")).unwrap();
让numcities=40;
让mut file=std::fs::file::create(args[3].clone()).unwrap();
file.write((0..numcities).map(|i | i.to_string()).collect:().join(->.).unwrap();
编译错误:

error[E0599]: no method named `join` found for struct `std::string::String` in the current scope
  --> main.rs:42:72
   |
42 |         file.write((0..numcities).map(|i| i.to_string()).collect::<String>().join("->")).unwrap();
   |                                                                              ^^^^ method not found in `std::string::String`
错误[E0599]:在当前作用域中找不到结构'std::string::string'的名为'join'的方法
-->main.rs:42:72
|
42 | file.write((0..numcities).map(| i | i.to_string()).collect::().join(->.).unwrap();
|在'std::string::string'中找不到^`

您需要收集到中间人
Vec

let data=[“A”、“B”、“C”];
让result=data.iter().map(|s|s.to_string()).collect::().join(“->”);
在《夜间1.53》中,您可以使用例如:

#![特征(国际热核实验堆散布)]
fn main(){
让数据=vec![“A”、“B”、“C”];
让结果=数据
.国际热核实验堆(iter)
.map(| x | x.到_字符串())
.INTERSISE(“->.”to_string())
收集::();
println!(“{}”,结果);
}

您需要
。收集::()
。一旦你已经将数字收集到一个大字符串中,加入它们就太晚了,它们已经被加入了。因为这是字符串上的无连接方法。顺便说一句,您的代码与错误消息不匹配。是否写入并返回写入的字节数?它将是一个单一的数字,不确定是否有任何东西会被连接到那里……或者(以及一个免费的iterables函数)。如果你每晚都在使用
iter\u intersperse
为什么不直接使用
intersperse(->“.to\u string())
<代码>字符串的克隆,虽然它将触发一个新的分配(对于分隔符值),但与此
interserse_的复杂性相比,这似乎不是一个大问题。或者,您可以只定义
let separator=“->”
,然后让
回调之间的间隔为
| separator。对于_string()
,迭代器似乎完全没有必要不?同样值得注意的是:itertools'join。