当前位置: 首页 > 知识库问答 >
问题:

match如何用“continue”进行编译?

白子明
2023-03-14

我在读Rust编程语言书,偶然发现了一个简单的表达式:

let guess: u32 = match guess.trim().parse() {
    Ok(num) => num,
    Err(_) => continue,
};

match如何处理不同类型的表达式?E、 g.第一个臂将简单地“return”num,以便将其分配给猜测,但在第二个臂中,表达式只是继续。如何匹配它,而不是将其“分配”给猜测,而是执行它?整个赋值表达式本身会发生什么情况?它是否从调用堆栈中删除(如果这是正确的术语)?


共有1个答案

缪嘉志
2023-03-14
匿名用户

继续有一个特殊类型:它返回从不类型,表示为

此类型表示“之后的代码是不可访问的”。由于继续跳转到循环的下一个循环,它实际上永远不会返回任何值(返回中断也是如此,它也是恐慌的返回类型!(),包括所有恐慌的宏:unreacable!()todo!()等)。

never类型是特殊的,因为它强制(自动转换)为任何类型(因为如果某个类型无法发生,我们可以将其视为u32、字符串或其他类型,这样就不会发生)。这意味着它还与任何其他类型统一,意味着任何类型和<代码>的交叉点 是另一种类型。

匹配需要表达式的类型进行统一(如果也是如此)。因此,您的代码返回u32==u32的统一。

您可以看到,如果您将表示类型(需要每晚,因为使用类型不在返回类型位置是实验性的):

let num = match num {
    Ok(num) => {
        let num: i32 = num;
        num
    }
    Err(()) => {
        let never: ! = continue;
        never
    }
};

操场。

 类似资料:
  • 问题内容: 我在编译代码时收到一条消息: 如何重新编译? 问题答案: 在javac的命令行上指定它: javac -Xlint:unchecked 或者,如果您使用的是Ant,请修改您的javac目标 如果您使用的是Maven,请在

  • 问题内容: 如何编译为汇编而不是gcc可执行文件。我知道有一个 -S 标志,但是我在makefile中的哪里使用它。例如,如果我使用标志 -O3 -o exe_name ,则应将-S标志放在哪里? 问题答案: 我建议也使用它,因为生成的汇编器具有一些生成的注释,可以“解释”代码。例如: 将在(带有一些注释)中生成通过编译生成的汇编代码 要了解GCC优化正在做什么,甚至可以尝试(但这会产生 数百个

  • 问题内容: 被Java编译过程弄糊涂 好的,我知道这一点:我们编写Java源代码,与平台无关的编译器将其转换为字节码,然后与平台相关的jvm将其转换为机器代码。 因此,从一开始,我们就编写Java源代码。编译器javac.exe是.exe文件。.exe文件到底是什么?Java编译器不是用Java编写的,然后为什么会有执行该文件的.exe文件?如果编译器代码是用Java编写的,那么在编译阶段如何执行

  • 我们的项目主要由两部分组成 null

  • 问题内容: 寻找无错误的经过测试的SQL脚本,我可以在UDF中使用它来通过sql编码url。函数将接受一个URL并传递一个URL编码的URL。我已经看到了一些,但是我所遇到的一切似乎都存在一些缺陷。 问题答案: 为了使用此脚本,您将需要使用Numbers表。 该脚本在SQL Server Central 上完全可用(需要注册)

  • 问题内容: 我正在和朋友一起在网上商店工作。他使用PHP为我设置了一个Cookie,并在购物车中添加了一定数量的产品。cookie称为“购物车”,带有产品数量的变量称为“ items”。 而且,我必须阅读cookie并使用javascript获取“购物车”的值并将其打印在HTML文档中,但是我不知道如何使用它,请您能帮我吗?我以前从未使用过Cookie或JSON,但我认为应该使用JSON完成,您能