根据Steve Klabnik在Rust 1.0文档之前的写作中关于String
和&str
之间区别的文章, 在Rust中,除非你真正需要拥有一个String
,否则应该使用&str
。同样地,建议使用对切片(&[]
)的引用而不是Vec
,除非你真正需要拥有Vec
。
我有一个Vec<String>
,我想编写一个函数来使用这个字符串序列,它不需要对Vec
或String
实例进行所有权控制,那么这个函数应该采用&[&str]
吗?如果是这样,将Vec<String>
引用到&[&str]
的最佳方式是什么?或者,这种转换是否过度繁琐?
AsRef<Path>
类型的切片时,这种方法会更加有用——你希望函数能够接受所有&[&str]
、&[String]
、&[Path]
和&[PathBuf]
的切片,而不需要分配新的内存。 - user4815162342Option<&[T]>
,则不能只传递None
而不指定具体类型。 - klefevre