From a19cd63694d41ebc421149fd314ebd7f683069c5 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Thu, 12 Feb 2026 22:11:46 +0000 Subject: [PATCH] clippy: fix from_iter_instead_of_collect lint https://rust-lang.github.io/rust-clippy/master/index.html#from_iter_instead_of_collect --- Cargo.toml | 1 + src/compiler/args.rs | 25 +++++++++++-------------- src/compiler/compiler.rs | 3 ++- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ec64061258..85f68cda9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -225,6 +225,7 @@ workspace = true cloned_instead_of_copied = "warn" cloned_ref_to_slice_refs = "warn" explicit_into_iter_loop = "warn" +from_iter_instead_of_collect = "warn" implicit_clone = "warn" manual_string_new = "warn" ptr_as_ptr = "warn" diff --git a/src/compiler/args.rs b/src/compiler/args.rs index b8db1b1594..453a58ca17 100644 --- a/src/compiler/args.rs +++ b/src/compiler/args.rs @@ -682,8 +682,7 @@ macro_rules! take_arg { #[cfg(test)] mod tests { use super::*; - use itertools::{Diff, diff_with}; - use std::iter::FromIterator; + use itertools::{Diff, Itertools as _, diff_with}; macro_rules! arg { ($name:ident($x:expr)) => { @@ -1028,40 +1027,38 @@ mod tests { } } - // https://github.com/rust-lang/rust-clippy/issues/6550 - #[allow(clippy::from_iter_instead_of_collect)] #[test] fn test_argument_into_iter() { // Needs type annotation or ascription let raw: Argument = arg!(Raw("value")); let unknown: Argument = arg!(UnknownFlag("-foo")); - assert_eq!(Vec::from_iter(raw.iter_os_strings()), ovec!["value"]); - assert_eq!(Vec::from_iter(unknown.iter_os_strings()), ovec!["-foo"]); + assert_eq!(raw.iter_os_strings().collect_vec(), ovec!["value"]); + assert_eq!(unknown.iter_os_strings().collect_vec(), ovec!["-foo"]); assert_eq!( - Vec::from_iter(arg!(Flag("-foo", FooFlag)).iter_os_strings()), + arg!(Flag("-foo", FooFlag)).iter_os_strings().collect_vec(), ovec!["-foo"] ); let arg = arg!(WithValue("-foo", Foo("bar"), Concatenated)); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foobar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foobar"]); let arg = arg!(WithValue("-foo", Foo("bar"), Concatenated(b'='))); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foo=bar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foo=bar"]); let arg = arg!(WithValue("-foo", Foo("bar"), CanBeSeparated)); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foobar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foobar"]); let arg = arg!(WithValue("-foo", Foo("bar"), CanBeSeparated(b'='))); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foo=bar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foo=bar"]); let arg = arg!(WithValue("-foo", Foo("bar"), CanBeConcatenated)); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foo", "bar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foo", "bar"]); let arg = arg!(WithValue("-foo", Foo("bar"), CanBeConcatenated(b'='))); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foo", "bar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foo", "bar"]); let arg = arg!(WithValue("-foo", Foo("bar"), Separated)); - assert_eq!(Vec::from_iter(arg.iter_os_strings()), ovec!["-foo", "bar"]); + assert_eq!(arg.iter_os_strings().collect_vec(), ovec!["-foo", "bar"]); } #[test] diff --git a/src/compiler/compiler.rs b/src/compiler/compiler.rs index ccb612ca79..1d9ccff751 100644 --- a/src/compiler/compiler.rs +++ b/src/compiler/compiler.rs @@ -41,6 +41,7 @@ use async_trait::async_trait; use filetime::FileTime; use fs::File; use fs_err as fs; +use itertools::Itertools as _; use serde::{Deserialize, Serialize}; use std::borrow::Cow; use std::ffi::{OsStr, OsString}; @@ -1715,7 +1716,7 @@ compiler_version=__VERSION__ let arg = arg.unwrap_or_else(|_| Argument::Raw(OsString::from(""))); if let Some(Detect_PassThrough(_)) = arg.get_data() { let required_arg = arg.normalize(NormalizedDisposition::Concatenated); - cmd.args(&Vec::from_iter(required_arg.iter_os_strings())); + cmd.args(&required_arg.iter_os_strings().collect_vec()); } }