作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下代码段:
use std::fmt;
enum TestEnum {
StructMem {value: i32, is_valid: bool},
RandoMem,
}
impl fmt::Display for TestEnum {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
use TestEnum::*;
match self {
StructMem {value, is_valid} => {
if *is_valid { // Why dereference is_valid ?
write!(f, "f")?
}
write!(f, "{:?}", value)
}
RandoMem => {
f.write_str("Random")
}
}
}
}
为什么我需要取消引用
is_valid
在
if
陈述?
最佳答案
这不是 match
所特有的。或 enum
但由于 fmt()
的签名, 这需要 self
作为引用( &self
而不是 self
,如果取得所有权)。match self
,因此,已经引用了 TestEnum
的借用实例和火柴臂StructMem {value, is_valid}
通过引用( &i32
和 &bool
)绑定(bind)。这就是为什么is_valid
最终成为 &bool
,而不是 bool
.
关于rust - 为什么解构借用的枚举需要取消引用其字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66201228/
我是一名优秀的程序员,十分优秀!