`feature(extract_if)` [1] was stabilized in Rust 1.87.0 [2], and the last significant change happened in Rust 1.85.0 [3] when the range parameter was added.
That is, with our new minimum version, we can start using the feature. Thus simplify the code using the feature and remove the TODO comment. Suggested-by: Gary Guo <[email protected]> Link: https://lore.kernel.org/rust-for-linux/[email protected]/ Link: https://github.com/rust-lang/rust/issues/43244 [1] Link: https://github.com/rust-lang/rust/pull/137109 [2] Link: https://github.com/rust-lang/rust/pull/133265 [3] Signed-off-by: Miguel Ojeda <[email protected]> --- rust/macros/kunit.rs | 9 +++++---- rust/macros/lib.rs | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/rust/macros/kunit.rs b/rust/macros/kunit.rs index 6be880d634e2..ae20ed6768f1 100644 --- a/rust/macros/kunit.rs +++ b/rust/macros/kunit.rs @@ -87,10 +87,11 @@ pub(crate) fn kunit_tests(test_suite: Ident, mut module: ItemMod) -> Result<Toke continue; }; - // TODO: Replace below with `extract_if` when MSRV is bumped above 1.85. - let before_len = f.attrs.len(); - f.attrs.retain(|attr| !attr.path().is_ident("test")); - if f.attrs.len() == before_len { + if f.attrs + .extract_if(.., |attr| attr.path().is_ident("test")) + .count() + == 0 + { processed_items.push(Item::Fn(f)); continue; } diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index 0c36194d9971..2cfd59e0f9e7 100644 --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -6,6 +6,9 @@ // and thus add a dependency on `include/config/RUSTC_VERSION_TEXT`, which is // touched by Kconfig when the version string from the compiler changes. +// Stable since Rust 1.87.0. +#![feature(extract_if)] +// // Stable since Rust 1.88.0 under a different name, `proc_macro_span_file`, // which was added in Rust 1.88.0. This is why `cfg_attr` is used here, i.e. // to avoid depending on the full `proc_macro_span` on Rust >= 1.88.0. -- 2.53.0
