From 40c89a5cb3aec9a297f2b4e4ee026c41c211f24c Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Fri, 7 Sep 2018 18:22:50 -0500 Subject: [PATCH] FEATURE: Implement From for &str and &[T] and Vec. --- src/iter.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/iter.rs b/src/iter.rs index 6765749..1d4ab79 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -21,6 +21,10 @@ impl<'a, T: Debug + 'a> SliceIter<'a, T> { } } +fn str_iter<'a>(input: &'a str) -> SliceIter<'a, u8> { + SliceIter::new(input.as_bytes()) +} + impl<'a, T: Debug + 'a> Iterator for SliceIter<'a, T> { type Item = &'a T; @@ -51,3 +55,22 @@ impl<'a, T: Debug + 'a> Clone for SliceIter<'a, T> { } impl<'a, T: Debug + 'a> InputIter for SliceIter<'a, T> {} + + +impl<'a> From<&'a str> for SliceIter<'a, u8> { + fn from(source: &'a str) -> Self { + str_iter(source) + } +} + +impl<'a, T: Debug> From<&'a [T]> for SliceIter<'a, T> { + fn from(source: &'a [T]) -> Self { + SliceIter::new(source) + } +} + +impl <'a, T: Debug> From<&'a Vec> for SliceIter<'a, T> { + fn from(source: &'a Vec) -> Self { + SliceIter::new(source.as_slice()) + } +} \ No newline at end of file