These are the only lints clippy 1.99.1 reports that clippy 1.98.0 does not.
Every cargo root in the tree was compared on both toolchains (the evidence is
in the next commit). 1.98.0's clippy also builds every target of the fixed
code, and reports nothing it did not report before, so this commit stands
under either pin.
What changed, and why
- clippy::assert_is_empty is new in 1.99. 36 sites, all in test code
(#[cfg(test)] modules; no lib or bin build reports any):
aac-core and access-core, 23 sites; openpay's op-crypto-extra, op-emv,
op-iso20022, op-reconciliation, op-routing, op-screening, op-settlement
and op-tax, 13 sites. `assert!(x.is_empty())` becomes
`assert_eq!(x, [] as [T; 0])`, `assert_ne!` for the negation, or `""` for
strings, so a failure prints the value instead of only "false". aac-core and
access-core are `#![deny(warnings)]` and `#![deny(clippy::all)]`, so without
this their clippy run fails on 1.99.1.
Judgment call: at 18 of the 36 sites, clippy's own "MachineApplicable"
suggestion does not compile. It names local types by crate-relative path
(`finder::Found`, which is not in scope in a test module), or offers a bare
`[]` whose element type cannot be inferred. So each site names its element
type as its own module sees it (`[] as [Found; 0]`, `[] as [f64; 0]`). The
four lines rustfmt would wrap are wrapped the way rustfmt wraps them.
- clippy::approx_constant (deny-by-default) now knows EULER_GAMMA and
GOLDEN_RATIO. Both are in std::f{32,64}::consts and stable since 1.94; the
jouleclaw workspace MSRV is 1.97.
- jouleclaw-omni, inference/architecture/mochi.rs: `1.618_034` becomes
`std::f32::consts::GOLDEN_RATIO`. They are the same f32
(1.61803400516510009765625), so the latents do not change. This file is
in standards-build.yml's macOS gate (`cargo clippy -p jouleclaw-omni
--features metal -- -D warnings`), which fails on 1.99.1 without the fix.
- jouleclaw-outlier, c_factor: `0.5772156649` becomes
`std::f64::consts::EULER_GAMMA`. Judgment call: the literal was
truncated, so c(n) moves by 3.1e-12. The normalisation in the
isolation-forest paper uses the Euler-Mascheroni constant itself, so this
is the intended value. No other crate and no committed vector reads these
scores, and the crate's tests pass unchanged.
- smart-byte-rs/Cargo.lock: async-trait 0.1.89 becomes 0.1.92, which adds
syn 3.0.9 as its dependency. 0.1.89 put `#[must_use]` on every trait method
it generates. clippy 1.99 now counts the returned `Pin<Box<dyn Future>>` as
must_use already, so clippy::double_must_use fired at 9 #[async_trait] trait
methods. The attribute there is the macro's, not ours, so the right fix is
the macro: 0.1.92 no longer emits it, and every other lockfile in this tree
already uses 0.1.92. A narrow `cargo update -p async-trait --precise 0.1.92`
also moved data-encoding-macro-internal (which accepts syn >=1, <3) from syn
2 to syn 1. That was put back to syn 2.0.117, as on main, so the lock
changes only what the bump needs. `cargo update --workspace --locked` and
scripts/check-lockfiles.sh accept it.
Left as they are
- openpay op-dispute-evidence evidence.rs:92 (clippy::double_must_use) is
reported on 1.98.0 too. Only the message's wording changed in 1.99.
Co-Authored-By: Claude Opus 5.5 <[email protected]>