pub fn iterator_examples() {
println!("\n🔄 Iterator Examples");
println!("{}", "-".repeat(21));
let vec = vec![1, 2, 3, 4, 5];
let doubled: Vec<i32> = vec.iter().map(|x| x * 2).collect();
println!("Doubled: {:?}", doubled);
let sum: i32 = vec.iter().sum();
println!("Sum: {}", sum);
}
pub fn manual_iterator_demo() {
println!("\n🔧 Manual Iterator Demo");
println!("{}", "-".repeat(25));
struct Counter {
current: usize,
max: usize,
}
impl Counter {
fn new(max: usize) -> Counter {
Counter { current: 0, max }
}
}
impl Iterator for Counter {
type Item = usize;
fn next(&mut self) -> Option<Self::Item> {
if self.current < self.max {
let current = self.current;
self.current += 1;
Some(current)
} else {
None
}
}
}
let counter = Counter::new(3);
for num in counter {
println!("Count: {}", num);
}
}
pub use crate::smart_pointers::{Shoe, shoes_in_size};