没有为 AsRef<Path> 找到名为 `join` 的方法

Rij*_*kii 5 rust

我有一个函数,它AsRef<Path>作为一个参数,看起来像这样

fn test<P: AsRef<std::path::Path>>(path: P) {
    path.join("13123123");
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,它给了我以下错误

fn test<P: AsRef<std::path::Path>>(path: P) {
    path.join("13123123");
}
Run Code Online (Sandbox Code Playgroud)

was*_*mup 5

试试这个

path.as_ref().join("13123123")
Run Code Online (Sandbox Code Playgroud)

看:

fn main() {
    let path = std::path::Path::new("./foo/bar/");
    test(path);
}

fn test<P: AsRef<std::path::Path>>(path: P) {
    println!("{:?}", path.as_ref().join("13123123"));
}
Run Code Online (Sandbox Code Playgroud)

输出:

path.as_ref().join("13123123")
Run Code Online (Sandbox Code Playgroud)

请参阅 的文档AsRef

  • 如果不是只给出解决方案而是解释*为什么*原始没有按预期工作,那么这个答案将会得到改进。 (11认同)