我尝试使用下面收集到字符串VEC生锈:收集到所有的字符串拥有VEC生锈
let fields : ~[~str] = row.split_str(",").collect();
我得到以下错误:预期的std :: ITER :: FromIterator < &海峡>,但发现的std :: ITER :: FromIterator <〜STR>(STR存储有所不同:预计&
但发现~
)
我曾尝试使用类型提示,但没有成功
我尝试使用下面收集到字符串VEC生锈:收集到所有的字符串拥有VEC生锈
let fields : ~[~str] = row.split_str(",").collect();
我得到以下错误:预期的std :: ITER :: FromIterator < &海峡>,但发现的std :: ITER :: FromIterator <〜STR>(STR存储有所不同:预计&
但发现~
)
我曾尝试使用类型提示,但没有成功
.split_str
返回iterator over &str
slices,即它返回row
数据的子视图。借来的&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.11
或在相应的文档上面的文档链接master
)。
随着夜间,上述两个片段将被写成:
let first: Vec<&str> = row.split(',').collect();
let second: Vec<String> = row.split(',').map(|s| s.to_string()).collect();
(。最后,如果你与&str
与~str
又名String
,I wrote up some details a while ago的区别挣扎)
谢谢!是的,我正在升级和改变我的语法。 – rdmcfee
什么你使用的是什么版本的Rust? – huon