Rust 如何要求显式返回语句并禁止隐式返回?
我希望通过以下要求确保代码样式的一致性:Rust 如何要求显式返回语句并禁止隐式返回?,rust,Rust,我希望通过以下要求确保代码样式的一致性: fn calc()->u32{ 返回1+1; } 禁止这样做: fn calc()->u32{ 1 + 1 } Cargo.toml中有任何设置吗 我不相信货物本身可以做到这一点,但正是为了这个 要启用lint,请放置行#![deny(clippy::implicit_return)]位于根文件的顶部(通常是main.rs或lib.rs)。如果使用隐式返回,现在运行的cargo clippy应该会显示一个错误。您可能还需要禁用具有相反警告的lint:
fn calc()->u32{
返回1+1;
}
禁止这样做:
fn calc()->u32{
1 + 1
}
Cargo.toml中有任何设置吗 我不相信货物本身可以做到这一点,但正是为了这个 要启用lint,请放置行
#![deny(clippy::implicit_return)]
位于根文件的顶部(通常是main.rs
或lib.rs
)。如果使用隐式返回,现在运行的cargo clippy
应该会显示一个错误。您可能还需要禁用具有相反警告的lint:#![允许(clippy::无需返回)]
示例代码:
#![deny(clippy::implicit_return)]
#![allow(clippy::needless_return)]
fn foo() -> u32 {
0
}
fn main() {
println!("{}", foo());
}
运行cargo clippy
后出现的错误:
错误:缺少返回语句
-->src/main.rs:5:5
|
5 | 0
|^帮助:添加“return”,如图所示:`return 0`
|
注:此处定义了棉绒水平
-->src/main.rs:1:9
|
1 | #![拒绝(clippy::隐式返回)]
| ^^^^^^^^^^^^^^^^^^^^^^^
=帮助:有关更多信息,请访问https://rust-lang.github.io/rust-clippy/master/index.html#implicit_return
这就像把#define begin{
,#define end}
放在你的C文件中,这样你就可以让它看起来像ALGOL:这是一个愚蠢的把戏,只会让你的代码在任何有实际经验的人看来都很奇怪。如果你对学习Rust感兴趣,那么就学习Rust,不要试图让它看起来像C或者其他你已经知道的语言。这并不是说禁止隐式return
会神奇地将Rust变成面向语句的语言;您仍然需要理解底层语法。如果你不想要一种面向表达式的语言,你应该禁止这种语句:let i=If条件{0}else{1}编码>并使用let i;如果条件{i=0;}否则{i=1;}
。对于match
@trentcl,它可能已经吓跑了大多数阅读代码的人,但是当它不。。。“你必须把回报放在你的代码中”如果他们试图贡献,肯定会。