gpt4 book ai didi

rust - AsRef for PathBuf 的实现是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 11:29:36 25 4
gpt4 key购买 nike

这是我在我的 Rust 版本中看到的实现:

#[stable(feature = "rust1", since = "1.0.0")]
impl AsRef<Path> for PathBuf {
#[inline]
fn as_ref(&self) -> &Path {
self
}
}
它说将 &PathBuf 转换为 &Path 的实现只是返回 self ,这意味着 &PathBuf 是 &Path (或者编译器本身知道它们可以自动转换)?
这是 2 个不同的结构,对吗?编译器怎么知道这没问题?

最佳答案

这是一个类型强制的案例,你可以阅读 here .
一、selffn as_ref()是一个有效的“强制站点”,因为它是一个函数结果。编译器将尝试从 self 类型强制转换( &PathBuf ) 到返回类型 ( &Path )。
其次,可能会发生类型强制,因为“&T&U 如果 T 实现 Deref<Target = U>”(参见文档)的情况适用于此处: PathBuf implements Deref<Target=Path> .
所以会发生什么是编译器隐式强制 self来自 &PathBuf&Path通过 Deref .

关于rust - AsRef<Path> for PathBuf 的实现是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64745653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com