rust - 比较 Cell 内部引用的非复制枚举
问题描述
我在这里有一个复制项目:https ://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=08e0f111394174b76ab788f784918dca下面也是代码。
我在匹配 aEnum
内部时遇到问题Cell
,而枚举不是Copy
,因为它的一个字段是 a String
。输入是对 a 的引用Cell
(在我的“真实”代码中,为了演示我的问题,我也在示例代码中将其作为引用)。
我不想使用 a RefCell
,因为它可能会崩溃,并且我不想在每次尝试匹配Enum
整个项目时都进行错误处理。
我尝试了一个match
表达式,试图搜索一个get
方法,但这仅适用Copy
于Cell
. 我不在乎某个clone
方法是否在某处被调用。
use std::cell::Cell;
#[derive(PartialEq, Clone)]
enum SoftDrink {
Cola,
Unknown(String)
}
fn main() {
assert_eq!(true, is_cola(&Cell::new(SoftDrink::Cola)));
assert_eq!(false, is_cola(&Cell::new(SoftDrink::Unknown("Fanta".to_owned()))));
}
fn is_cola(drink: &Cell<SoftDrink>) -> bool {
// ??
}
解决方案
推荐阅读
- android - drawable 中的可绘制“ic_settings”在基本可绘制文件夹中没有声明
- javascript - 为什么“脚本”是“身体”的孩子?
- javascript - 如何与 jQuery 打招呼?
- python - 滚动平均主客场
- reactjs - react-redux/firebase 用户注册失败
- flutter - 自定义滑块拇指可选区域与自定义滑块轨道不正确
- powershell - 在 CMD 中访问 Powershell 中的对象
- c# - 使用 dataview.totable() 从 c# 数据表中删除重复行不适用于空行值
- javascript - UI5 自定义控件 - 绑定/刷新属性问题
- python-3.x - 在从 Django 的管理仪表板添加记录时,为模型“CustomUser()”键入“FieldError”