我有一个函数返回一个f64
。我想确保使用该函数的输出,而不是仅仅忽略它。有什么办法可以做到这一点吗?
返回类型不用于错误处理,因此将其包装在Result
or Option
确实没有意义。
我想要类似的东西:
#[must_use]
fn calculate_the_thing(number: f64) -> f64 {
number * 2.0
}
自 Rust 1.27 起#[must_use] 属性可以用在函数上
#[must_use]
fn calculate_the_thing(number: f64) -> f64 {
number * 2.0
}
fn main() {
calculate_the_thing(4); // warning: unused return value of `calculate_the_thing ` which must be used
let _ = calculate_the_thing(4); // (no warning)
}
在旧版本中,#[must_use]
仅适用于类型,不适用于单个值。
一种替代方法是定义一个简单的包装类型#[must_use]
:
#[must_use = "this value should be used (extract with .0)"]
pub struct MustUse<T>(pub T);
然后你的函数可以返回MustUse<f64>
,如果用户写入,则会收到警告calculate_the_thing(12.3)
,甚至建议获得他们想要的东西的正确方法:let x = calculate_the_thing(12.3).0;
. 例如:
fn calculate_the_thing(number: f64) -> MustUse<f64> {
MustUse(number * 2.0)
}
fn main() {
calculate_the_thing(12.3); // whoops
let x = calculate_the_thing(12.3).0;
println!("{}", x);
}
warning: unused `MustUse` which must be used: this value should be used (extract with .0)
--> src/main.rs:9:5
|
9 | calculate_the_thing(12.3); // whoops
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(unused_must_use)] on by default
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)