Rust:没有为结构 `std::string::String` 找到名为 `join` 的方法

Rust: no method named `join` found for struct `std::string::String`

嗯,为什么这不起作用?

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();

编译错误:

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`

您需要收进中介Vec<String>:

let data = ["A", "B", "C"];
let result = data.iter().map(|s| s.to_string()).collect::<Vec<String>>().join("->"));

nightly 1.53中,你可以使用intersperse例如:

#![feature(iter_intersperse)]

fn main() {
    let data = vec!["A", "B", "C"];
    let result = data
        .iter()
        .map(|x| x.to_string())
        .intersperse("->".to_string())
        .collect::<String>();
    println!("{}", result);
}

Playground