【发布时间】:2022-06-15 04:33:10
【问题描述】:
我已经在 Rust 项目上工作了很长一段时间来学习 rust,并且遇到了一个我已经工作了很长时间但不确定是否可以在 rust 中完成的阻止程序。
主要目标
我希望能够将一个元组 (x, y) 与另一个元组进行比较,但如果其中一个值(在同一位置)匹配,则表达式评估为 true。例如。
(x, y) == (a, y) = True
(x, z) == (z, x) = False
(x, z) == (x, b) = True
我尝试了什么
我知道执行 match 语句是最直接的方法,但我将此元组传递给使用此元组查询地图的第三方函数。
所以我尝试使用 Option,并用 Some 包装值并尝试做类似的事情
(Some(_), Some(a)) == (Some(g), Some(a)) = Want this to equal true.
但它没有奏效。
我在 rust 中尝试做的事情可能吗?我能做些什么来尝试做到这一点?非常感谢您的宝贵时间。
编辑:
为了更清楚地说明这一点,这是使用此元组的函数。
let entries_data = ENTRIES.may_load(deps.storage, (<<<anything>>>, address));
这个元组被用来查询一个地图,我希望能够使用一个允许它的内容之一是任何内容的元组进行查询(所以它只匹配元组中的一个项目)。
【问题讨论】:
-
根据您的编辑,解决方案在很大程度上取决于
ENTRIES是什么以及may_load是否支持这种查询。此外,您需要一个 value 来进行比较,而 pattern(您正在尝试使用Some(_))不是一个值。