Her*_*nan 9 path ownership rust
以下代码有效,但不确定它是否正确.几个问题:
Path或PathBuf?AsRef吗?PathBuf::from(path)为了拥有结构所拥有的路径吗?use std::fmt;
use std::path::PathBuf;
struct Example {
path: PathBuf,
}
impl fmt::Display for Example {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.path.to_str().unwrap())
}
}
impl Example {
fn new(path: &PathBuf) -> Example {
// Do something here with path.
Example {
path: PathBuf::from(path),
}
}
}
fn main() {
let x = Example::new(&PathBuf::from("test.png"));
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
一些上下文:我试图对应该知道自己路径的文件进行高级抽象.也许设计是完全错误的.
Ste*_*nik 11
这个问题与Stringvs 几乎相同&str,如果这有帮助的话.PathBuf是String,&Path是&str.所以:
PathBuf如果您希望结构拥有它,请存储a .如果您不知道自己想要什么,请从这里开始.
&Path如果您只想要引用路径,请存储a .根据你正在做的事情,这可能是你想要的,但如果你不知道,它可能不正确.