有没有之间的差异panic!("blah");和panic("blah")?
据我所知,分号区分语句和表达式1.换句话说,缺少分号表示由于表达式2而预期值.
在大多数情况下,这非常简单,但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;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
使用分号,您将能够编译一些有关无法访问的代码的警告.
还有一个隐含的问题:
恐慌之后有没有理由不加分号?
我能想到的是你在编写自己的不同功能时:
fn crash_override() -> ! {
panic!("oops")
}
Run Code Online (Sandbox Code Playgroud)
它不是必需的,但对于读者而言,panic!在这种情况下从不"返回"永远类型似乎更为明显.
有没有之间的差异
panic!("blah");和panic("blah")?
是的,前者是一种陈述,后者是一种表达.
但
panic!导致当前线程终止.
这是默认行为,是的,但它并不是唯一的行为.如果panic = abort未启用,您可以在需要时捕获恐慌.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |