- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的代码中,我有很多带有 Option<T>
的结构在他们里面。我需要在很多地方与他们一起工作,所以我的代码中充斥着像 car.engine.as_ref().unwrap()
这样的结构访问。 .这对代码可读性来说是痛苦的。
Option<T>
上有默认函数吗?相同的类型?喜欢car.engine.get()
?当然,我可以为每个结构成员编写访问器函数,但这对于如此基本的东西来说似乎有点矫枉过正。我做错了吗?
我不太了解宏,但是有没有办法用宏来缩短它?
最佳答案
您也许可以利用 ?
运算符(自 Rust 1.22 起)也适用于 Option<T>
输入(就像使用 Result<T, E>
一样):
struct Foo;
struct Bar {
foo: Option<Foo>,
// other optional fields
}
impl Bar {
fn use_optional_fields(&self) -> Option<&Foo> {
let foo = self.foo.as_ref()?;
// use optional fields
Some(foo)
}
}
关于rust - as_ref().unwrap() 有快捷方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47570580/
在我的代码中,我有很多带有 Option 的结构在他们里面。我需要在很多地方与他们一起工作,所以我的代码中充斥着像 car.engine.as_ref().unwrap() 这样的结构访问。 .这对代
在 Rust 中以更有意义的方式对 as_ref.unwrap() 上的序列重新排序的惯用方式是什么?我有一组从数据库返回的值,并按以下方式处理它们: pub fn get_results(resul
我在我的代码中使用了新的通用转换特征,但体验到的人体工学效果有所下降。有问题的代码实现了 AsRef for [Ascii]正如您在示例中所见。 现在我想使用 v.as_ref()在assert_eq
有没有办法在不使用&Box的情况下对as_ref进行模式匹配?我使用的是稳定的Rust,因此的答案不能涉及box_patterns 。 本质上,我有这样的代码: enum Foo { Thin
我希望这两个代码示例的结果相同: let maybe_string = Some(String::from("foo")); let string = if let Some(ref value) =
我是一名优秀的程序员,十分优秀!