Summary
The main window creation path in the desktop crate carries an #[allow(unused_mut)] attribute that can never fire, and it silently suppresses the compiler check for that binding.
src/apps/desktop/src/appearance.rs:578 marks the main window builder binding with #[allow(unused_mut)]. Removing the attribute changes nothing: the binding's mutability is genuinely consumed on every platform, so the suppression has no warning to silence — it is permanently inert.
The binding is unconditionally reassigned via builder.disable_drag_drop_handler() (appearance.rs:610) on all platforms, with further reassignments in the #[cfg(target_os = "macos")] and #[cfg(target_os = "windows")] blocks (:617-629). Because the mut requirement is satisfied unconditionally, the allow attribute can never trigger — but as long as it sits on the binding, any future regression that actually removes all mutating uses would be silently swallowed instead of reported.
Area
Desktop app
Reproduction or evidence
- Delete the
#[allow(unused_mut)] line at appearance.rs:578 on main.
- Run
cargo check --release -p bitfun-desktop.
- Observe: no new warning appears for
appearance.rs — confirming the allow was suppressing nothing.
A deletion-only fix (remove the attribute) is ready to submit; it restores the lint's coverage for this binding at zero behavior cost. PR to follow referencing this issue.
Summary
The main window creation path in the desktop crate carries an
#[allow(unused_mut)]attribute that can never fire, and it silently suppresses the compiler check for that binding.src/apps/desktop/src/appearance.rs:578marks the main window builder binding with#[allow(unused_mut)]. Removing the attribute changes nothing: the binding's mutability is genuinely consumed on every platform, so the suppression has no warning to silence — it is permanently inert.The binding is unconditionally reassigned via
builder.disable_drag_drop_handler()(appearance.rs:610) on all platforms, with further reassignments in the#[cfg(target_os = "macos")]and#[cfg(target_os = "windows")]blocks (:617-629). Because themutrequirement is satisfied unconditionally, theallowattribute can never trigger — but as long as it sits on the binding, any future regression that actually removes all mutating uses would be silently swallowed instead of reported.Area
Desktop app
Reproduction or evidence
#[allow(unused_mut)]line at appearance.rs:578 on main.cargo check --release -p bitfun-desktop.appearance.rs— confirming the allow was suppressing nothing.A deletion-only fix (remove the attribute) is ready to submit; it restores the lint's coverage for this binding at zero behavior cost. PR to follow referencing this issue.