You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use tracing::instrument;// 0.1.40#[warn(clippy::used_underscore_binding)]#[instrument]fnfoo(_bar:u8){println!("Not using bar.");}
This code unexpectedly triggers clippy::used_underscore_binding:
Checking playground v0.0.1 (/playground)
warning: used binding `_bar` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> src/lib.rs:5:8
|
5 | fn foo(_bar: u8) {
| ^^^^
|
note: `_bar` is defined here
--> src/lib.rs:5:8
|
5 | fn foo(_bar: u8) {
| ^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#used_underscore_binding
note: the lint level is defined here
--> src/lib.rs:3:8
|
3 | #[warn(clippy::used_underscore_binding)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: `playground` (lib) generated 1 warning
Finished dev [unoptimized + debuginfo] target(s) in 2.34s
To my mind, _bar should be considered unused, even though tracing::instrument does indeed access it - as it is unused in non-autogenerated user code.
This expectation is in line with struct fields which are unaccessed in user code and prefixed with _:
Bug Report
Version
Platform
Linux <hostname> 6.6.3-1-default #1 SMP PREEMPT_DYNAMIC Wed Nov 29 05:06:07 UTC 2023 (d766c57) x86_64 x86_64 x86_64 GNU/Linux
Crates
tracing-attributes
(tracing::instrument
)Description
The following code contains an unused function argument, prefixed with
_
.https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=2308e79f9b714df38c3d424a0bb90a08
This code unexpectedly triggers
clippy::used_underscore_binding
:To my mind,
_bar
should be considered unused, even thoughtracing::instrument
does indeed access it - as it is unused in non-autogenerated user code.This expectation is in line with struct fields which are unaccessed in user code and prefixed with
_
:These do not trigger clippy in derived code.
Proposed fix
tracing::instrument
should apply#[allow(clippy::used_underscore_bindings)]
to the argument in auto-generated code.Workaround
As a temporary workaround
#[instrument(skip(_bar))]
can be used, which makes tracing in fact not access the unused field.However, the logging of parameters passed as supposedly unused argument may be intentional and desired.
The text was updated successfully, but these errors were encountered: