1- #[ cfg( feature = "vec_diff_lcs" ) ]
2- use similar:: algorithms:: lcs as diff_algo;
3-
4- #[ cfg( feature = "vec_diff_myers" ) ]
5- use similar:: algorithms:: lcs as diff_algo;
6-
71use similar:: algorithms:: { Capture , Compact , Replace as SimilarReplace } ;
82
93use crate :: { Apply , ApplyError , Diffable , Replace } ;
@@ -75,7 +69,7 @@ mod visitor_impls {
7569 Self :: Unchanged => { }
7670 Self :: Changed { changes } => {
7771 for chg in changes {
78- chg. accept ( visitor)
72+ chg. accept ( visitor) ;
7973 }
8074 }
8175 Self :: Replaced ( r) => visitor. replaced ( r) ,
@@ -90,7 +84,7 @@ mod visitor_impls {
9084 fn accept < V : crate :: Visitor > ( & self , visitor : & mut V ) {
9185 match self {
9286 VecChange :: Remove { at_index, count } => {
93- visitor. splice :: < T > ( * at_index, * count, & [ ] )
87+ visitor. splice :: < T > ( * at_index, * count, & [ ] ) ;
9488 }
9589 VecChange :: Insert { at_index, values } => visitor. splice ( * at_index, 0 , values) ,
9690 VecChange :: Splice {
@@ -188,6 +182,7 @@ where
188182{
189183 type Diff = VecDiff < ' a , T , T :: Diff > ;
190184
185+ #[ allow( clippy:: too_many_lines) ]
191186 fn diff ( & self , other : & ' a Self ) -> Self :: Diff {
192187 if self . is_empty ( ) && other. is_empty ( ) {
193188 // short circuit
@@ -205,7 +200,21 @@ where
205200 ) ]
206201 let rkeys: Vec < _ > = other. iter ( ) . map ( |v| v. key ( ) ) . collect ( ) ;
207202 let mut d = Compact :: new ( SimilarReplace :: new ( Capture :: new ( ) ) , & lkeys, & rkeys) ;
208- diff_algo:: diff ( & mut d, & lkeys, 0 ..lkeys. len ( ) , & rkeys, 0 ..rkeys. len ( ) ) . unwrap ( ) ;
203+
204+ if cfg ! ( feature = "vec_diff_myers" ) {
205+ similar:: algorithms:: myers:: diff (
206+ & mut d,
207+ & lkeys,
208+ 0 ..lkeys. len ( ) ,
209+ & rkeys,
210+ 0 ..rkeys. len ( ) ,
211+ )
212+ . unwrap ( ) ;
213+ } else {
214+ similar:: algorithms:: lcs:: diff ( & mut d, & lkeys, 0 ..lkeys. len ( ) , & rkeys, 0 ..rkeys. len ( ) )
215+ . unwrap ( ) ;
216+ }
217+
209218 let ops = d. into_inner ( ) . into_inner ( ) . into_ops ( ) ;
210219 let n_ops = ops. len ( ) ;
211220 let mut offset = 0isize ;
0 commit comments