Rust 中 AsRef
AsRef
use std::path::Path;
fn foo>(path: P) {
let p = path.as_ref();
// ...
}
而 &Path 直接使用即可,不需要进行转换,比如说:
use std::path::Path;
fn foo(path: &Path) {
// ...
}
所以,对于只需要传递 Path 类型参数的函数,使用 &Path 会更加方便。而对于需要同时支持 PathBuf 类型和 &str 类型的函数,使用 AsRef
use std::path::{Path, PathBuf};
fn bar>(path: P) {
let p = path.as_ref().to_path_buf();
// ...
}
在这个函数中,路径参数可以是 &str 类型或者 PathBuf 类型,由于 AsRef