From 9f987a3b44d322b43e88657baf194e647560167b Mon Sep 17 00:00:00 2001 From: William Martin Date: Sat, 16 May 2026 09:15:46 +0100 Subject: [PATCH 1/4] fix(rust): collapse nested if into match guard to satisfy clippy::collapsible_match --- rust/src/lib.rs | 70 ++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 0749890..6a26efd 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1919,47 +1919,45 @@ impl Linter { ); } } - Expr::Name(name) => { - if name.id.as_str() == "concat" { - if !call.arguments.args.is_empty() { - if let Expr::List(list) = &call.arguments.args[0] { - let mut schemas = Vec::new(); - for el in &list.elts { - if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) - { - schemas.push(s.clone()); - } + Expr::Name(name) if name.id.as_str() == "concat" => { + if !call.arguments.args.is_empty() { + if let Expr::List(list) = &call.arguments.args[0] { + let mut schemas = Vec::new(); + for el in &list.elts { + if let Expr::Name(n) = el { + if let Some((s, _)) = + self.variables.get(n.id.as_str()) + { + schemas.push(s.clone()); } } - if schemas.len() >= 2 { - is_merge_or_concat = true; - merge_schema = - Some((schemas[0].clone(), schemas[1].clone())); - } } - } else if let Some(keyword) = - call.arguments.keywords.iter().find(|k| { - k.arg.as_ref().map(|s| s.as_str()) == Some("objs") - }) - { - if let Expr::List(list) = &keyword.value { - let mut schemas = Vec::new(); - for el in &list.elts { - if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) - { - schemas.push(s.clone()); - } + if schemas.len() >= 2 { + is_merge_or_concat = true; + merge_schema = + Some((schemas[0].clone(), schemas[1].clone())); + } + } + } else if let Some(keyword) = + call.arguments.keywords.iter().find(|k| { + k.arg.as_ref().map(|s| s.as_str()) == Some("objs") + }) + { + if let Expr::List(list) = &keyword.value { + let mut schemas = Vec::new(); + for el in &list.elts { + if let Expr::Name(n) = el { + if let Some((s, _)) = + self.variables.get(n.id.as_str()) + { + schemas.push(s.clone()); } } - if schemas.len() >= 2 { - is_merge_or_concat = true; - merge_schema = - Some((schemas[0].clone(), schemas[1].clone())); - } + } + if schemas.len() >= 2 { + is_merge_or_concat = true; + merge_schema = + Some((schemas[0].clone(), schemas[1].clone())); } } } From 1da32aaa70bcef18025cb730a6e6299720550300 Mon Sep 17 00:00:00 2001 From: William Martin Date: Sun, 24 May 2026 12:33:17 +0100 Subject: [PATCH 2/4] style(rust): merge split if-let conditions to satisfy cargo fmt check Rustfmt at the current toolchain version collapses two-line if-let conditions into a single line when they fit within the 100-char limit. Co-Authored-By: Claude Sonnet 4.6 --- rust/src/lib.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 6a26efd..a204b3c 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1925,8 +1925,7 @@ impl Linter { let mut schemas = Vec::new(); for el in &list.elts { if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) + if let Some((s, _)) = self.variables.get(n.id.as_str()) { schemas.push(s.clone()); } @@ -1947,8 +1946,7 @@ impl Linter { let mut schemas = Vec::new(); for el in &list.elts { if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) + if let Some((s, _)) = self.variables.get(n.id.as_str()) { schemas.push(s.clone()); } From 4a8893ad282ea254326225b607ef2201ec418e7b Mon Sep 17 00:00:00 2001 From: William Martin Date: Tue, 26 May 2026 08:57:54 +0100 Subject: [PATCH 3/4] style(rust): run cargo fmt to fix all formatting issues --- rust/src/lib.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index a204b3c..a33a96e 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1937,10 +1937,11 @@ impl Linter { Some((schemas[0].clone(), schemas[1].clone())); } } - } else if let Some(keyword) = - call.arguments.keywords.iter().find(|k| { - k.arg.as_ref().map(|s| s.as_str()) == Some("objs") - }) + } else if let Some(keyword) = call + .arguments + .keywords + .iter() + .find(|k| k.arg.as_ref().map(|s| s.as_str()) == Some("objs")) { if let Expr::List(list) = &keyword.value { let mut schemas = Vec::new(); From ba24dd62c0592784bffa6541a3351bc4a7bd287b Mon Sep 17 00:00:00 2001 From: William Martin Date: Tue, 26 May 2026 08:58:23 +0100 Subject: [PATCH 4/4] chore(dev): add cargo fmt and cargo clippy to pre-commit hooks --- .pre-commit-config.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aa81261..873c6fb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,3 +13,18 @@ repos: - id: ruff-check args: [--fix] - id: ruff-format + + - repo: local + hooks: + - id: cargo-fmt + name: Rust format check + entry: bash -c 'cd rust && cargo fmt --all -- --check' + language: system + files: \.rs$ + pass_filenames: false + - id: cargo-clippy + name: Rust clippy + entry: bash -c 'cd rust && cargo clippy -- -D warnings' + language: system + files: \.rs$ + pass_filenames: false