我有一个返回 Vec<PathBuf>
的函数和一个接受 &[&Path]
的函数,基本上是这样的:
use std::path::{Path, PathBuf};
fn f(paths: &[&Path]) {
}
fn main() {
let a: Vec<PathBuf> = vec![PathBuf::from("/tmp/a.txt"), PathBuf::from("/tmp/b.txt")];
f(&a[..]);
}
是否可能将Vec<PathBuf>
转换为&[&Path]
而不进行内存分配?
如果不能,应该如何更改f
的签名以接受包含Path
和PathBuf
的切片?
f
改成fn f(paths: &[PathBuf])
吗?它仍然接受一个切片,所以没有额外的分配。 - Peter Hallf
函数签名并非偶然,我也将Vec<&Path>
传递给它。 - user1244932T, I where T: Iterator<Item=I>, I: AsRef<Path>
。请注意,在翻译过程中,我保留了原文的意思并尽可能地使其更通俗易懂,但没有添加解释或其他信息。 - the8472