每史蒂夫Klabnik的上的差异之间的预锈1.0文档中的书面记录String
,并&str
在锈,你应该使用&str
,除非你真的需要有一个以上的所有权String
。同样,除非确实需要对的所有权,否则建议使用对slice(&[]
)的引用而不是Vec
s Vec
。
我有一个,Vec<String>
并且我想编写一个使用此字符串序列的函数,并且不需要对该Vec
或String
实例的所有权,该函数应该采用&[&str]
吗?如果是这样,什么是引用的最佳方式Vec<String>
进入&[&str]
?或者,这是强制性的过度杀伤力吗?
您可以创建一个同时接受&[String]
和&[&str]
使用AsRef
trait的函数:
fn test<T: AsRef<str>>(inp: &[T]) {
for x in inp { print!("{} ", x.as_ref()) }
println!("");
}
fn main() {
let vref = vec!["Hello", "world!"];
let vown = vec!["May the Force".to_owned(), "be with you.".to_owned()];
test(&vref);
test(&vown);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句