Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. struct VectorProducer {
  2. pub pool: Vec<Vec<i32>>,
  3. }
  4.  
  5. impl VectorProducer {
  6. fn new() -> VectorProducer {
  7. VectorProducer{pool: Vec::new()}
  8. }
  9. fn get(&mut self) -> Vec<i32> {
  10. self.pool.pop().unwrap_or(Vec::new())
  11. }
  12. fn put(&mut self, v: Vec<i32>) {
  13. self.pool.push(v);
  14. }
  15. }
  16.  
  17. impl Iterator for VectorProducer {
  18. type Item = Vec<i32>;
  19. fn next(&mut self) -> Option<Self::Item> {
  20. let mut buffer = self.get();
  21. if buffer.len() == 0 {
  22. for i in 0..10 {
  23. buffer.push(i);
  24. }
  25. }
  26. Some(buffer)
  27. }
  28. }
  29.  
  30. fn main() {
  31. println!("Hello, world!");
  32. let mut vp = VectorProducer::new();
  33. for v in vp {
  34. println!("{:?}",v);
  35. vp.put(v);
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement