有什么理由在恐慌之后加分号吗?

2024-05-24

之间有区别吗panic!("blah"); and panic("blah")?

As I understand things, semicolons differentiate between statements and expressions1 https://doc.rust-lang.org/book/second-edition/ch03-03-how-functions-work.html#statements-and-expressions. Put differently, the lack of a semicolon shows that a value is expected as a result of the expression2 https://stackoverflow.com/a/26665514/9614249.

在大多数情况下这非常简单,但是panic!导致当前线程终止。该程序将永远不会从panic!所以表达式的结果没有意义,对吧?

是否会表达panic!("blah")行为与声明不同panic!("blah);?


在 99% 的情况下,没有任何有意义的差异。我只是让 rustfmt 做它想做的事,而不去想它。

有什么理由在恐慌之后加分号吗?

是的。如果您决定在某些代码中间添加恐慌以进行一些快速而肮脏的调试,如果您不添加分号,则会出现语法错误:

fn main() {
    // ... some code ...

    // We add a quick panic for some reason
    panic!("oops")

    // ... some code ...
    1;
}
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `1`
 --> src/main.rs:8:5
  |
5 |     panic!("oops")
  |                   - expected one of `.`, `;`, `?`, `}`, or an operator here
...
8 |     1;
  |     ^ unexpected token

使用分号,您将能够在编译时出现一些有关无法访问的代码的警告。

还有一个隐含的问题:

有什么理由not在恐慌后面加分号?

我能想到的是当你编写自己的发散函数时:

fn crash_override() -> ! {
    panic!("oops")
}

这不是必需的,但对于读者来说,从“返回”的 never 类型可能会显得更明显panic!在这种情况下。

之间有区别吗panic!("blah"); and panic("blah")?

是的,前者是陈述,后者是表达。

but panic!导致当前线程终止。

是的,这是默认行为,但它不是唯一的行为。什么时候panic = abort未启用,如果需要,你可以陷入恐慌 https://stackoverflow.com/q/27384824/155423.

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

有什么理由在恐慌之后加分号吗? 的相关文章

随机推荐

  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • 简单的 JQuery 淡入淡出股票

    我查看了多个股票行情 它们的权重都远远不够 我正在寻找一个非常简单的 fadeIn fadeOut JQuery 滚动条 用于显示标题的元素列表 li Story 1 li li Story 2 li li Story 3 li li St
  • Microsoft Azure 数据仓库和 SqlAlchemy

    我正在尝试使用 python 的 sqlalchemy 库连接到 microsoft azure 数据仓库 并收到以下错误 pyodbc Error HY000 HY000 Microsoft ODBC SQL Server Driver
  • 如何检查应用程序是否违反 Google 的假冒政策

    我的应用程序已从 Google Play 商店中删除 原因如下 经审核 我的应用 有 由于政策罢工而被暂停并从 Google Play 中删除 因为 它违反了假冒政策 有没有其他方法可以在发布之前检查应用程序是否遵守所有 Google 政策
  • nuxt中根据url参数动态加载组件

    我在 nuxt 中有一个页面 分为两部分 第一部分是一个普通的模板结构 填充了基于 url 参数的动态内容 第二部分是应根据此数据加载的组件 我正在尝试这样完成它
  • ASP.NET Web 应用程序中的身份验证遇到问题

    我正在尝试对从登录页面登录我的 Web 应用程序的用户进行身份验证 我正在使用本教程 http support microsoft com kb 301240作为指南 它几乎准确地解释了我希望做什么 但是当我输入用户名和密码时 验证不起作用
  • 从R中的序列中随机提取多个连续项

    Frag lt seq 1 30000 K lt 9 P lt sample 1 K 1 sys sample lt Frag seq P length Frag K 现在 sys sample 包含 3333 个数字 如何在R中随机提取1
  • CodeIgniter 删除 index.php 和 .htaccess

    我已经为此工作了一个小时 所以我想我不妨问一下 我正在尝试从 CodeIgniter 应用程序的 URL 中删除 index php 但无法执行此操作 该应用程序在我办公室的专用服务器上运行 我通过 url 访问该应用程序http smr
  • 从 HealthKit 获取昨天的步数

    我正在构建一个供个人使用的应用程序 目前我正致力于如何从 healthkit 中准确获取昨天的步数 然后从那里将其放入变量中 我知道应该很容易 我有一个 HealthKitManager 类 它从视图内部调用该函数 然后将其附加到同一视图中
  • 将查询参数添加到 URL

    我正在尝试自动从网站下载数据 我需要将动态参数传递到每天更改的站点 html 的结构是表格而不是表单 如何传递参数并从 url 获取结果 这是我尝试过的 它需要在 python 2 7 中 import urllib url https d
  • 计算div标签内img标签的数量

    我的代码是这样的 div img src some image png img src some image png div class another div div div class another div div div 我想计算该
  • 列表元素之间的 Tab WPF

    我有一个列表框 其中每个项目都使用文本框表示 问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间进行切换 当前 和正常的 WPF 行为 是 当我按 Tab 键进入列表框时 第一个元素会突出显示 如果我再次按
  • Android Fitness API 未从可穿戴传感器读取数据

    我一直在阅读有关 Google Fit API 的内容 特别是传感器 API https developers google com fit android sensors https developers google com fit a
  • 向数据框添加新列的问题 - Spark/scala

    我是 Spark scala 的新手 我正在尝试将一些数据从配置单元表读取到 Spark 数据帧 然后根据某些条件添加一列 这是我的代码 val DF hiveContext sql select from select from test
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 为什么某些手机会出现“此应用程序的配置不正确”错误?

    我已经在 android 6 中构建了我的应用程序 没有任何错误 但是当我在 android 4 4 2 中构建我的应用程序时 我收到此错误 This app has been built with an incorrect configu
  • 有没有办法将 google colab 永久连接到我的 google 硬盘?

    我在这里发现了这个很好的问题 https stackoverflow com questions 48376580 google colab how to read data from my google drive https stack
  • 何时取消订阅

    我有一个关于如何取消订阅可观察的问题 我有两个代码 但我不确定哪一个更好 示例 1 gt 流结束后取消订阅订阅者 Subscriber
  • Rails I18n 翻译范围

    编写完全翻译的应用程序可能会变得乏味 有没有办法为当前上下文设置默认翻译范围 示例 我正在部分内容中写入 deadlines html erb in the 显示 html erb我的行动ProjectsController 现在 因为我想
  • 有什么理由在恐慌之后加分号吗?

    之间有区别吗panic blah and panic blah As I understand things semicolons differentiate between statements and expressions1 http