可以声明将在Rust中对未使用的结果发出警告的函数吗?

ide*_*n42 3 return function rust

Rust是否有办法声明一个函数,不使用它的结果会警告 - 对于任何类型?

像GCC那样的东西__attribute__((warn_unused_result));

lje*_*drz 6

从1.27开始,也#[must_use]适用于功能.


似乎该#[must_use]属性仅适用于structs,enums和unions(union尽管在稳定的Rust中不可用):source.我认为这意味着你无法覆盖它的功能.


Mat*_* M. 5

是的,如果你不介意包装所述类型.

#[must_use]由@ljedrz回答的属性仅适用于类型.但是,在Rust中,创建新类型是无痛的,并且对性能没有影响.因此,只需将您的类型包装在一个MustUse<T>类型中,并让您的函数解决此问题.

struct MustUse<T>(T);
Run Code Online (Sandbox Code Playgroud)

  • @ ideasman42:只有在(1)你想要强制使用的值和(2)你没有使用`Result`时才有必要.这似乎是一种罕见的情况,我从来没有使用它,大多数时候我不在乎调用者是否使用返回值.引入`must_use`的唯一原因是提醒调用者被调用函数可能以错误结束,这是由Rust中的`Result`类型惯用传达的. (2认同)