1 use std::marker::PhantomData; 2 3 use {Source, Value}; 4 5 /// A random sequence. 6 pub struct Sequence<'l, S: ?Sized, V> where S: Source + 'l, V: Value + 'l { 7 source: &'l mut S, 8 phantom: PhantomData<&'l V>, 9 } 10 11 impl<'l, S, V> From<&'l mut S> for Sequence<'l, S, V> where S: Source, V: Value { 12 #[inline(always)] 13 fn from(source: &'l mut S) -> Self { 14 Sequence { source: source, phantom: PhantomData } 15 } 16 } 17 18 impl<'l, S, V> Iterator for Sequence<'l, S, V> where S: Source, V: Value { 19 type Item = V; 20 21 #[inline(always)] 22 fn next(&mut self) -> Option<V> { 23 Some(self.source.read()) 24 } 25 } 26