rust - 收集到 rust 中拥有的字符串的拥有的 vec

标签 rust rust-obsolete

我正在尝试使用以下方法将使用rust 的字符串收集到 vec 中:

let fields : ~[~str] = row.split_str(",").collect();

我收到以下错误:预期 std::iter::FromIterator<&str>,但找到 std::iter::FromIterator<~str>(str 存储不同:预期 & 但找到~)

我尝试过使用类型提示但没有成功

最佳答案

.split_str 返回 iterator over &str slices ,也就是说,它正在返回 row 的 subview 数据。借来的&str不是自有的~str : 要使这项工作有效,请收集到 ~[&str] ,或者,复制每个 &str进入~str收集前:

let first: ~[&str] = row.split_str(",").collect();
let second: ~[~str] = row.split_str(",").map(|s| s.to_owned()).collect();

FWIW,如果您要拆分单字符谓词,则 split 会更有效率,(例如 row.split(',') 在这种情况下)。

另外,我推荐你upgrade to a more recent version of Rust , 0.11 是最近发布的,但 nightlies 是推荐的安装目标(将上述文档链接中的 0.10 更改为 0.11master 以获得相应的文档)。

对于 nightly,上面的两个片段将被写成:

let first: Vec<&str> = row.split(',').collect();
let second: Vec<String> = row.split(',').map(|s| s.to_string()).collect();

(最后,如果您正在努力区分 &str~str 又名 StringI wrote up some details a while ago 。)

关于rust - 收集到 rust 中拥有的字符串的拥有的 vec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689463/

相关文章:

python - 数组的所有排列,其中数组中的每个元素必须按0到n之间的范围递增

rust - 在 Rust 中引用一个包含结构(并调用它的方法)

multithreading - 在 Rust 中的线程之间共享可变变量

rust - 我可以借用一个指向 Rust 中共享特征的指针吗?

rust - 什么是已弃用的 std::raw::Repr 的现代模拟?

macros - 宏是否可以将标识符变为小写?

generics - 如何为类型引用的操作指定通用特征?

rust - 在 `Options` 中找不到 `getopts`

rust - 如何在稳定的 Rust 中分配堆上的结构而不占用堆栈上的空间?

rust - 为什么#[derive(Show)] 不再起作用了?