rust 从'PathBuf'转换为'PathBuf'(& P)

nr9pn0ug  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(108)

这似乎是一个非常简单的问题,但我从文档中没有得到任何线索。代码从&PathBuf创建PathBuf。我想知道是什么使这成为可能。文档中有一个实现,它从&String创建String。但是没有这样的PathBuf实现?幕后发生了什么?有什么工具/方法可以帮助我调试/调查?

fn main() {
    let a = std::path::PathBuf::from("");
    let b = std::path::PathBuf::from(&a);
}
krugob8w

krugob8w1#

转换通过OsStr进行。
PathBuf具有impl AsRef<OsStr> for PathBuf实现和impl<T: AsRef<OsStr>> From<&T> for PathBuf实现
顺便说一句,a也是这样工作的。PathBuf不实现From<&str>,但&str实现了AsRef<OsStr>

gkl3eglg

gkl3eglg2#

&T到拥有的T的方法是通过Clone特征,它是为PathBuf实现的:

fn main() {
    let a = std::path::PathBuf::from("");
    let b = a.clone();
}

相关问题