Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct VectorProducer {
- pub pool: Vec<Vec<i32>>,
- }
- impl VectorProducer {
- fn new() -> VectorProducer {
- VectorProducer{pool: Vec::new()}
- }
- fn get(&mut self) -> Vec<i32> {
- self.pool.pop().unwrap_or(Vec::new())
- }
- fn put(&mut self, v: Vec<i32>) {
- self.pool.push(v);
- }
- }
- impl Iterator for VectorProducer {
- type Item = Vec<i32>;
- fn next(&mut self) -> Option<Self::Item> {
- let mut buffer = self.get();
- if buffer.len() == 0 {
- for i in 0..10 {
- buffer.push(i);
- }
- }
- Some(buffer)
- }
- }
- fn main() {
- println!("Hello, world!");
- let mut vp = VectorProducer::new();
- loop {
- match vp.next() {
- Some(v) => {
- println!("{:?}",v);
- vp.put(v);
- },
- None => break,
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement