gpt4 book ai didi

rust - as_ref().unwrap() 有快捷方式吗?

转载 作者:行者123 更新时间:2023-11-29 07:56:07 27 4
gpt4 key购买 nike

在我的代码中,我有很多带有 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/

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