diff --git a/src/sequencematcher.rs b/src/sequencematcher.rs index 6bccd52..26c3bf6 100644 --- a/src/sequencematcher.rs +++ b/src/sequencematcher.rs @@ -74,6 +74,32 @@ impl<'a> Sequence for Vec<&'a str> { } } +impl Sequence for String { + fn len(&self) -> usize { + self.len() + } + + fn at_index(&self, index: usize) -> Option<&str> { + if index > self.len() { + return None; + } + unsafe { Some(self.slice_unchecked(index, index + 1)) } + } +} + +impl<'a> Sequence for Vec { + fn len(&self) -> usize { + self.len() + } + + fn at_index(&self, index: usize) -> Option<&str> { + if index < self.len() { + return Some(&self[index]); + } + None + } +} + pub struct SequenceMatcher<'a, T: 'a + ?Sized + Sequence>{ first_sequence: &'a T, second_sequence: &'a T,