- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在调试(逐步使用)此Rust代码时:
use std::fs;
fn main() {
fs::create_dir("my_dir").unwrap();
}
我觉得我很难理解:
// rustup\toolchains\stable-x86_64-pc-windows-gnu\lib\rustlib\src\rust\library\core\src\convert\mod.rs
// As lifts over &
#[stable(feature = "rust1", since = "1.0.0")]
impl<T: ?Sized, U: ?Sized> AsRef<U> for &T
where
T: AsRef<U>,
{
fn as_ref(&self) -> &U {
<T as AsRef<U>>::as_ref(*self)
}
}
然后调用:
#[stable(feature = "rust1", since = "1.0.0")]
impl AsRef<Path> for str {
#[inline]
fn as_ref(&self) -> &Path {
Path::new(self)
}
}
“抬起&”的含义是什么意思?为什么需要它?
<T as AsRef<U>>
我以前从未见过这种语法。这是什么意思?
最佳答案
我认为As lifts over &
只是意味着如果T
可以作为对U
的引用,那么&T
也可以,因为为什么不这样做呢?
它还提供了一些便利,例如如果您碰巧具有类型&&&&&&T
的值,则不需要(******t).as_ref()
,而只是t.as_ref()
,因为通过使用这种实现,as_ref
会遍历所有级别的引用,直至T
对象本身,并将其作为对U
的引用。
你怎么学呢?好吧,Rust最受欢迎的前三本教科书以某种方式提供了此信息(不一定明确地向您解释这种特殊情况,而是为您提供了足够的知识来隐式地理解它们。因此,我建议您阅读一本(并仔细阅读)。
关于<T as AsRef<U>>
,它肯定在书中进行了介绍。需要disambiguate calls to functions。例如,如果某个类型实现了两个不同的特征,但是两个特征都具有相同的as_ref
方法,则您需要完全限定要调用哪个特征的功能,为此,您将<T as AsRef<U>>
进行识别,并立即清除要调用的as_ref
函数。
关于rust - “As lifts over &” AsRef的隐含含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64735982/
我正在使用 Fortran90,但我对它不太熟悉。 在代码的某些地方,我想在 t0 和 tf 之间创建一个由 n 个线性等距点组成的数组,所以我尝试了以下方法: t = t0+(/(i,i=0,n-1
我试图弄清楚为什么在数组构造函数内的 do 构造之前放置标量会产生它所得到的答案。 我一般理解 do 结构,(/(i,i=1,5)/) 相当于 (/1,2,3,4,5/)。 real, dimensi
我目前遇到的情况是,我需要能够通过应用程序 B 的隐式 Intent 广播来启动应用程序 A。应用程序之间没有数据传递。应用程序 A 被简单地启动,显示特定的 Activity。 我的问题是这样的;从
我是一名优秀的程序员,十分优秀!