diff --git a/diffus-derive-test/src/lib.rs b/diffus-derive-test/src/lib.rs index 67f180e..846a79b 100644 --- a/diffus-derive-test/src/lib.rs +++ b/diffus-derive-test/src/lib.rs @@ -412,4 +412,27 @@ mod test { &vec![string::Edit::Copy('a'), string::Edit::Insert('\''),] ); } + + #[test] + fn vec_string() { + #[derive(Diffus, Debug, PartialEq)] + struct A { + a: Vec, + } + + let a = A { a: vec!["a".to_string()] }; + let ap = A { a: vec!["ap".to_string()] }; + + let diff = a.diff(&ap); + + use edit::collection; + + assert_eq!( + diff.change().unwrap().a.change().unwrap(), + &vec![ + collection::Edit::Remove(&"a".to_string()), + collection::Edit::Insert(&"ap".to_string()) + ] + ) + } } diff --git a/diffus/src/same.rs b/diffus/src/same.rs index fa635c4..0837b53 100644 --- a/diffus/src/same.rs +++ b/diffus/src/same.rs @@ -22,7 +22,7 @@ macro_rules! same_for_eq { } } -same_for_eq! { i64, i32, i16, i8, u64, u32, u16, u8, char, str, bool, isize, usize, () } +same_for_eq! { i64, i32, i16, i8, u64, u32, u16, u8, char, str, String, bool, isize, usize, () } macro_rules! same_for_float { ($($typ:ty),*) => {