A skeleton code for Iterator in Rust
Posted: October 13, 2015 | Author: Hyunsik Choi | Filed under: Code | Tags: iterator, rust |
For record, I wrote down the same code.
Consuming Iterator
|
pub struct TaskSet; |
|
|
|
pub struct TaskSetIterator { |
|
… |
|
} |
|
|
|
impl Iterator for TaskSetIterator { |
|
type Item = Task; |
|
|
|
fn next(&mut self) -> Option<Task> { |
|
…. |
|
} |
|
} |
|
|
|
pub struct Task; |
|
|
|
impl IntoIterator for TaskSet { |
|
type Item = Task; |
|
type IntoIter = TaskSetIterator; |
|
|
|
fn into_iter(self) -> Self::IntoIter { |
|
TaskSetIterator { … } |
|
} |
|
} |
Iterator that does not consume items
|
pub struct TaskSetRefIterator<'a> |
|
{ |
|
…. |
|
} |
|
|
|
impl<'a> Iterator for TaskSetRefIterator<'a> { |
|
type Item = &'a Task; |
|
|
|
fn next(&mut self) -> Option<&'a Task> { |
|
None |
|
} |
|
} |
|
|
|
impl<'a> IntoIterator for &'a TaskSet { |
|
type Item = &'a Task; |
|
type IntoIter = TaskSetRefIterator<'a>; |
|
|
|
fn into_iter(self) -> Self::IntoIter { |
|
TaskSetRefIterator { … } |
|
} |
|
} |