From b2cc38ee63929ac279ce3309b7f11917b40e0f61 Mon Sep 17 00:00:00 2001 From: Luna Yao <40349250+ZnqbuZ@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:27:33 +0200 Subject: [PATCH] chore(clippy): disallow some methods from itertools (#2075) --- easytier/.clippy.toml | 11 +++++++++++ easytier/src/connector/dns_connector.rs | 3 +-- easytier/src/peers/peer_ospf_route.rs | 3 +-- 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 easytier/.clippy.toml diff --git a/easytier/.clippy.toml b/easytier/.clippy.toml new file mode 100644 index 00000000..9ee46783 --- /dev/null +++ b/easytier/.clippy.toml @@ -0,0 +1,11 @@ +disallowed-methods = [ + { path = "itertools::Itertools::map_into", reason = "Blocks underlying iterator optimizations. Use the native `.map(Into::into)` instead." }, + { path = "itertools::Itertools::map_ok", reason = "Blocks underlying iterator optimizations. Use the native `.map(|r| r.map(f))` instead." }, + { path = "itertools::Itertools::filter_ok", reason = "Blocks underlying iterator optimizations. Use a native approach, e.g., `.filter(|r| r.as_ref().map_or(true, condition))`." }, + { path = "itertools::Itertools::filter_map_ok", reason = "Blocks underlying iterator optimizations. Use native `.map()` and `.flatten()`, or extract logic into a standard `.filter_map()`." }, + + { path = "itertools::Itertools::collect_vec", reason = "Non-standard idiom. Directly use the standard library's `.collect::>()`." }, + { path = "itertools::Itertools::try_collect", reason = "Non-standard idiom. Standard `collect()` already supports Result/Option inversion; use `.collect::>()`." }, + { path = "itertools::Itertools::set_from", reason = "Non-standard idiom. Directly use the `.extend()` method provided by the standard library's `Extend` trait." }, + { path = "itertools::Itertools::concat", reason = "Non-standard idiom. Use native `.flatten().collect()` or a slice's `.concat()` instead." } +] \ No newline at end of file diff --git a/easytier/src/connector/dns_connector.rs b/easytier/src/connector/dns_connector.rs index 813d5f36..f264a7d7 100644 --- a/easytier/src/connector/dns_connector.rs +++ b/easytier/src/connector/dns_connector.rs @@ -14,7 +14,6 @@ use crate::{ use anyhow::Context; use dashmap::DashSet; use hickory_resolver::proto::rr::rdata::SRV; -use itertools::Itertools; use rand::{seq::SliceRandom, Rng as _}; use strum::VariantArray; @@ -117,7 +116,7 @@ impl DnsTunnelConnector { let srv_domains = IpScheme::VARIANTS .iter() .map(|s| (s, format!("_easytier._{}.{}", s, domain_name))) - .collect_vec(); + .collect::>(); tracing::info!("build srv_domains: {:?}", srv_domains); let responses = Arc::new(DashSet::new()); let srv_lookup_tasks = srv_domains diff --git a/easytier/src/peers/peer_ospf_route.rs b/easytier/src/peers/peer_ospf_route.rs index f346d475..0a99ca29 100644 --- a/easytier/src/peers/peer_ospf_route.rs +++ b/easytier/src/peers/peer_ospf_route.rs @@ -71,7 +71,6 @@ use super::{ }; use atomic_shim::AtomicU64; -use itertools::Itertools; static SERVICE_ID: u32 = 7; static UPDATE_PEER_INFO_PERIOD: Duration = Duration::from_secs(3600); @@ -1327,7 +1326,7 @@ impl RouteTable { .into_iter() .flat_map(|info| &info.proxy_cidrs) .filter_map(|cidr| cidr.parse::().ok()) - .collect_vec(); + .collect::>(); // build next hop map let (graph, start_node) =