@@ -779,18 +779,24 @@ pub(crate) fn as_substr<'a>(
779779 original : & ' a str ,
780780 suggestion : & ' a str ,
781781) -> Option < ( usize , & ' a str , usize ) > {
782- let common_prefix = original
783- . chars ( )
784- . zip ( suggestion. chars ( ) )
785- . take_while ( |( c1, c2) | c1 == c2)
786- . map ( |( c, _) | c. len_utf8 ( ) )
787- . sum ( ) ;
788- let original = & original[ common_prefix..] ;
789- let suggestion = & suggestion[ common_prefix..] ;
790- if let Some ( stripped) = suggestion. strip_suffix ( original) {
791- let common_suffix = original. len ( ) ;
792- Some ( ( common_prefix, stripped, common_suffix) )
782+ if let Some ( stripped) = suggestion. strip_prefix ( original) {
783+ Some ( ( original. len ( ) , stripped, 0 ) )
784+ } else if let Some ( stripped) = suggestion. strip_suffix ( original) {
785+ Some ( ( 0 , stripped, original. len ( ) ) )
793786 } else {
794- None
787+ let common_prefix = original
788+ . chars ( )
789+ . zip ( suggestion. chars ( ) )
790+ . take_while ( |( c1, c2) | c1 == c2)
791+ . map ( |( c, _) | c. len_utf8 ( ) )
792+ . sum ( ) ;
793+ let original = & original[ common_prefix..] ;
794+ let suggestion = & suggestion[ common_prefix..] ;
795+ if let Some ( stripped) = suggestion. strip_suffix ( original) {
796+ let common_suffix = original. len ( ) ;
797+ Some ( ( common_prefix, stripped, common_suffix) )
798+ } else {
799+ None
800+ }
795801 }
796802}
0 commit comments