gpt4 book ai didi

rust - 在 Rust 中的 match 语句中解构 Option>

转载 作者:行者123 更新时间:2023-12-03 15:20:59 24 4
gpt4 key购买 nike

我有一个大物体需要装在另一个物体中,但我不一定总是需要它。因此,我想使用 if 语句来获取可选的盒装 TempStructure,但我不确定如何同时解构和取消引用。
例子:

pub struct TempStructure {
lots_of_data: [u64; 64],
}
pub struct Structure {
pending_removal: Option<Box<(TempStructure, bool)>>,
}
impl Structure {
pub fn do_somthing(&mut self) {
// How do I destructure the Option and dereference the Box to get TempStructure?
if let Some((temp_structure, some_boolean)) = self.pending_removal.take() {
// Do something with temp_structure and some_boolean
}
}
}
当我这样做 ^^^ 我得到一个 expected struct `std::boxed::Box`, found tuple错误。

最佳答案

匹配后取消引用框:

if let Some(inner) = self.pending_removal.take() {
let (temp_structure, some_boolean) = *inner;
// Do something with temp_structure and some_boolean
}
(playground)
如果您认为这有点笨拙,那么您是对的。每晚你可以使用不稳定的 box_patterns功能以为此启用更好的语法(尽管 this might never be stabilized ):
if let Some(box (temp_structure, some_boolean)) = self.pending_removal.take() {
// Do something with temp_structure and some_boolean
}
(playground)

关于rust - 在 Rust 中的 match 语句中解构 Option<Box<_>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66638106/

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