From d2549720db9e766f4db35cacd83f3d3bc459595f Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Sat, 27 Sep 2025 12:21:04 +0200 Subject: [PATCH 1/2] Update `thiserror` dependency --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 56b6355..0d27e01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ CLI = ["dep:clap"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -thiserror = "1.0" +thiserror = "2.0" vg_errortools = "0.1" serde_json = { version = "1.0", features = ["preserve_order"] } diffs = "0.5" From 9da274f5d5fe0aa429d4093e15f7850a1256b29e Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Sat, 27 Sep 2025 12:23:10 +0200 Subject: [PATCH 2/2] Fix rust/clippy lints --- src/mismatch.rs | 2 +- src/process.rs | 19 +++++-------------- src/sort.rs | 2 +- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/mismatch.rs b/src/mismatch.rs index 8d1da21..cfdb75a 100644 --- a/src/mismatch.rs +++ b/src/mismatch.rs @@ -33,7 +33,7 @@ impl Mismatch { && self.right_only == DiffTreeNode::Null } - pub fn all_diffs(&self) -> Vec<(DiffType, DiffEntry)> { + pub fn all_diffs(&self) -> Vec<(DiffType, DiffEntry<'_>)> { let both = self .unequal_values .get_diffs() diff --git a/src/process.rs b/src/process.rs index ee56f97..5e33e00 100644 --- a/src/process.rs +++ b/src/process.rs @@ -1,15 +1,15 @@ use std::collections::HashMap; use std::collections::HashSet; -use diffs::{Diff, myers, Replace}; +use diffs::{myers, Diff, Replace}; use regex::Regex; use serde_json::Map; use serde_json::Value; +use crate::sort::preprocess_array; use crate::DiffTreeNode; use crate::Mismatch; use crate::Result; -use crate::sort::preprocess_array; /// Compares two string slices containing serialized json with each other, returns an error or a [`Mismatch`] structure holding all differences. /// Internally this calls into [`compare_serde_values`] after deserializing the string slices into [`serde_json::Value`]. @@ -165,16 +165,7 @@ fn process_arrays( &mut deleted, &mut inserted, )); - myers::diff( - &mut diff, - a.as_slice(), - 0, - a.len(), - b.as_slice(), - 0, - b.len(), - ) - .unwrap(); + myers::diff(&mut diff, &*a, 0, a.len(), &*b, 0, b.len()).unwrap(); fn extract_one_sided_values(v: Vec<(usize, usize)>, vals: &[Value]) -> Vec<(usize, &Value)> { v.into_iter() @@ -182,8 +173,8 @@ fn process_arrays( .collect::>() } - let left_only_values: Vec<_> = extract_one_sided_values(deleted, a.as_slice()); - let right_only_values: Vec<_> = extract_one_sided_values(inserted, b.as_slice()); + let left_only_values: Vec<_> = extract_one_sided_values(deleted, &a); + let right_only_values: Vec<_> = extract_one_sided_values(inserted, &b); let mut left_only_nodes = values_to_node(left_only_values); let mut right_only_nodes = values_to_node(right_only_values); diff --git a/src/sort.rs b/src/sort.rs index 2edf8e9..75c5dfc 100644 --- a/src/sort.rs +++ b/src/sort.rs @@ -27,7 +27,7 @@ pub(crate) fn preprocess_array<'a>( sort_arrays: bool, a: &'a Vec, ignore_keys: &[Regex], -) -> Cow<'a, Vec> { +) -> Cow<'a, [Value]> { if sort_arrays || !ignore_keys.is_empty() { let mut owned = a.to_owned(); owned.sort_by(|a, b| compare_values(a, b, ignore_keys));