当我不关心枚举包含什么值时,如何在“if”语句中使用枚举?

2024-01-06

我有一个枚举:

#[derive(PartialEq, Eq)]
enum Foo {
    A,
    B(usize),
}

我可以用它if涉及其他逻辑的语句,例如baz:

fn bar(foo: &Foo, baz: bool) {
    if foo == &Foo::B(3) || baz {
        println!("Do stuff")
    }
}

但是,这不会编译:

fn bar(foo: &Foo, baz: bool) {
    if foo == &Foo::B(_) || baz {
        println!("Do stuff")
    }
}

我如何在if当我不在乎什么价值时的声明B包含?


使用a可能更容易match在这种情况下:

fn do_stuff() {
    println!("Do stuff")
}

fn bar(foo: &Foo, baz: bool) {
    match foo {
        &Foo::B(_) => do_stuff(),
        _ => {
            if baz {
                do_stuff();
            }
        }
    }
}

或者使用if let:

fn bar(foo: &Foo, baz: bool) {
    if let &Foo::B(_) = foo {
        do_stuff();
    } else {
        if baz {
            do_stuff();
        }
    }
}

我不确定您是否可以轻松地将所有内容合并到一个条件中,这会让您重复do_stuff很遗憾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我不关心枚举包含什么值时,如何在“if”语句中使用枚举? 的相关文章

  • 在 C++ 中迭代连续枚举值的最简单方法[重复]

    这个问题在这里已经有答案了 什么是首选simple在 C 中迭代具有连续值的枚举的方法 我发现以前关于这个主题的问题涉及创建自定义operator 等等 但这似乎有点矫枉过正 到目前为止 我想出的最好的办法是 enum FOO BAR BL
  • 为什么我要使用发散函数?

    读 Rust 书时 我发现一个有趣的话题 发散函数 https doc rust lang org stable book first edition functions html diverging functions Rust 有一些特
  • 具有 Void 关联类型的通用 Swift 4 枚举

    tl dr 是否可以实例化具有关联类型值的通用 Swift 4 枚举成员Void 背景 我正在使用一个简单的Result枚举 类似于反典型结果 https github com antitypical Result enum Result
  • Box、ref、&、*的理解及关系

    我对 Rust 中的指针如何工作有点困惑 有ref Box 而且我不确定他们如何一起工作 目前我的理解是这样的 Box并不是真正的指针 它是一种在堆上分配数据并在函数参数中传递未调整大小的类型 尤其是特征 的方法 ref在模式匹配中用于借用
  • 如何异步读取文件?

    我可以创建一个单独的线程来充当 I O 队列 但我不确定这是否是最好的方法 看起来是最好的 我不知道如何加载本地文件mio https github com carllerche mio 使用 tokio fs read use tokio
  • 时间:2019-03-17 标签:c#AlphaTelephoneNumberTranslator

    我有一个家庭作业 该程序将接受格式类似于 555 GET FOOD 的任何电话号码 任务是将字母映射到数字 并将数字翻译成其对应的数字 例如 A B C 2 D E F 3 ETC 目前我们还没有讨论类或创建地图 因此这些不是可行的解决方案
  • 如何在 Rust 中从文字创建格式化字符串?

    我将根据给定的参数返回一个字符串 fn hello world name Option
  • 如何遍历任意给定集合中的枚举?

    我有很多枚举类型 它们与相应的集合相结合 例如 type TMyEnum meOne meTwo meThree TMyEnums set of TMyEnum 我正在尝试提出一组可以运行的函数any枚举集 而不是为每个枚举编写单独的函数
  • 返回数组大小的关联常量[重复]

    这个问题在这里已经有答案了 考虑以下trait pub trait Representable const SIZE usize fn get self gt u8 SIZE fn set mut self value u8 SIZE 我想
  • 如何在 Angular @Input 中仅接受预定义值

    我的问题是 我在 a 中收到一个字符串值作为组件的参数 但我想限制可以用作参数的值 就像enum I use Input type string 但是在组件中 一切都可以引入type正如我之前所说 我需要将其限制为 3 个选项 例如Enum
  • future::select 之间有什么区别!和东京::选择?

    我正在使用 Tokio 我想接收来自两个不同的请求mpsc队列 select 似乎是要走的路 但我不确定两者之间有什么区别futures select and tokio select 在什么情况下应该使用其中一种而不是另一种 tokio
  • 有没有一种方法可以“展平”Rust 中的(反)序列化枚举?

    我有一个由其他枚举组成的枚举 类似于以下内容 serde为简洁起见 省略了派生和注释 enum Main A SubA B SubB enum SubA X1 X2 X3 enum SubB Y1 Y2 Y3 我很想能够使用serde反序列
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • Excel 2003 中的 IFERROR

    我通过阅读几个线程了解到IFERROR在 Excel 2003 中由IF ISERROR 我尝试从 Excel 2007 复制的代码是 IFERROR A1 我知道必须有一个简单的解决方案将其转换为IF ISERROR 但我没有任何效果 意
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • Rust 中声明变量的宏?

    在 C 中 可以编写声明变量的宏 如下所示 define VARS a b c int a b c 当然 这不是您通常想要做的事情 在实际的例子中 我希望开始工作 但它并不那么简单 define VARS data stride a b c
  • 为什么使用 reqwest 下载的 PNG 图像的字节与使用 Python 下载的不同?

    我正在尝试使用 reqwest 库来下载 PNG 文件 但是当我下载它时 我看到了其他编程语言的奇怪行为 例如 Python 例如 let content reqwest get https www google es images sea
  • 在 C 的公共 API 函数中使用枚举参数是个好主意吗?

    我正在设计一个 C API 其中必须提供一种设置一些双值选项的方法 为了识别选项 我使用以下枚举 typedef enum OptionA OptionB Option 使用是一个好主意吗Option作为公共 API 函数中的参数类型 in
  • openApi schema 中不区分大小写的字符串参数

    我有一个开放的 API 规范 其参数如下 name platform in query description Platform of the application required true schema type string enu
  • 返回“!”是什么意思?铁锈中的意思是什么?

    最近我在 Rust 中发现了一个返回的函数 而不是基本类型 如下所示 fn my function gt 这是什么意思 我无法在中找到有关此的信息锈迹斑斑的书 https doc rust lang org book 该函数使用此类指标返回

随机推荐

  • 在 WPF 中使用数据绑定时 OxyPlot 不刷新

    我正在异步获取数据并尝试通过 LineSeries 填充绘图 但更新绑定集合 ObservableCollection 时绘图不会刷新 注意 当绑定集合更改时 我有一个 XAML 行为来调用 InvalidatePlot true 谁能解释
  • 与 .Net 兼容的 RSA 密钥(XML 格式)

    如何生成基于 xml 的 RSA 密钥 私有 公共 该密钥应与 NET 环境兼容 我尝试了 PHP 中的 phpseclib 模块 但它不兼容 NET 请建议我有什么方法可以在 Java 中生成基于 xml 的 RSA 密钥吗 实际上我正在
  • 具有私有集的只读 List

    我怎样才能暴露List
  • 为不在包中的 R6 类创建 Rd 文档文件

    我正在尝试创建一些包含一些 R6 类的脚本的文档 作为示例 我使用此处名为 Person 的 R6Class https www tidyverse org blog 2019 11 roxygen2 7 0 0 https www tid
  • 在提交表单 html5 之前调整图像大小

    我需要在客户端中调整图像大小并在提交之前将其添加到表单中 这是完整的 html
  • 如何从数据库表中选择4个大小相等的结果集

    我有一个包含很多行的 SQL Server 数据库表 我正在使用一个使用该表作为数据源的程序 该程序本身不支持多线程 因此我必须运行该程序的多个实例 并且对于每个实例 我需要告诉要处理整个基础数据的哪一部分 我一直在使用此语句将基本数据 表
  • 定期 iOS 后台位置更新

    我正在编写一个需要后台位置更新的应用程序高精度 低频率 解决方案似乎是一个后台 NSTimer 任务 它启动位置管理器的更新 然后立即关闭 这个问题之前已经被问过 如何在我的 iOS 应用程序中每 n 分钟更新一次后台位置 https st
  • 以编程方式导入/导出 VS 设置?

    有没有办法通过 Visual Studio 扩展 即通过 Visual Studio API 导入 导出 Visual Studio 设置 我想将一些特定设置导出到本地文件 就像 VS 导入和导出设置向导所做的那样 但是当然没有 UI 交互
  • Modernizr 与 HTML shiv

    如果我只需要旧版浏览器识别 HTML5 标签 我应该使用它 现代化 http www modernizr com 或流行的HTML5 刀 http code google com p html5shiv 另外 如果我不需要设置 HTML5
  • 如何仅导入不存在的文档?

    我正在使用 mongo import 来导入一堆 json 并且我正在寻找一种仅导入不存在的记录的方法 可以通过 oid 检查 我尝试使用 upsert 但它会更新记录 如果它已经存在 我想完全忽略它 有任何想法吗 mongoimport
  • 服务在不同端口上运行的域的 SSL 证书

    我有一台服务器 在不同端口上运行不同的服务 例如 https 主机名 9000 com https hostname 9000 com或 wss hostname 4536 com 等 现在可以保护所有这些服务的单一正确 SSL 证书是什么
  • 提交消息中的 Change-Id 丢失时出现 Gerrit 错误

    我在远程存储库中设置了一个分支 并在该分支上进行了一些提交 现在我想将远程分支合并到远程主控 我的操作基本上如下 结帐分支 结帐大师 合并分支并修复合并错误 commit 推送原点 HEAD refs for master 但在第5步时出现
  • 如果项目存在于“禁止使用的单词”数组中,则从数组中删除该项目

    我有一个数组 Array 0 gt tom 1 gt and 2 gt jerry 我还有一个不允许的单词数组 Array 0 gt and 1 gt foo 2 gt bar 我需要做的是删除第一个数组中也出现在第二个数组中的任何项目 例
  • 将普通公钥转换为 PEM

    我已经使用 Prime 256v1 从受信任的应用程序生成了 EC 密钥对 并将公钥导出到普通操作系统 密钥大小为 65 字节 公钥采用纯格式 仅密钥十六进制 导出的公钥需要提供给图书馆 第三方 该库需要 PEM 格式的公钥 经过一段时间的
  • 如何使用java中的另一个堆栈反转堆栈[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 您好 我正在尝试使用另一个空堆栈来反转堆栈 我自己编码的堆栈 由于某种原因它无法正常工作 谁能帮我这个 public s
  • Thymeleaf 用变量构造 URL

    我有以下代码在我的控制器中设置变量 model set type type 在 thymeleaf 视图中 我想构建一个带有操作 url 的表单 mycontroller type 有什么想法如何实现这一目标 我读过百里香文档但没有运气 A
  • C# 局部变量初始化一次

    我认为我的问题是完全愚蠢的 但我必须知道答案 在这种情况下是否可以只初始化一个变量一次 static void Main while true MethodA MethodB private static void MethodA stri
  • PhpStorm 设置存储库不支持在没有 HEAD 的情况下提交存储库

    我正在尝试在 GitHub 上设置一个设置存储库 创建新的 GitHub 帐户和新存储库后 如果我在 PhpStorm 的 设置存储库 对话框中输入存储库上游 URL 我会收到以下错误消息 无法同步设置 当前不支持在没有 HEAD 的情况下
  • 为什么应该执行“sh -c a.out”而不是 a.out 本身?

    我正在研究Apple的实现popen at https opensource apple com source Libc Libc 167 gen subproj popen c auto html https opensource app
  • 当我不关心枚举包含什么值时,如何在“if”语句中使用枚举?

    我有一个枚举 derive PartialEq Eq enum Foo A B usize 我可以用它if涉及其他逻辑的语句 例如baz fn bar foo Foo baz bool if foo Foo B 3 baz println