pub type Iterator |backing: &Any| = mut fn () -> Option<&T ref backing> pub int Iterable { ref fn iterator() -> Iterator(&self) } fn main() { let nums: List = [1, 2, 3] let iterator: Iterator |backing = nums| = nums.iterator() let first: &Int ref nums = iterator().unwrap() let second: &Int ref nums = iterator().unwrap() let third: &Int ref nums = iterator().unwrap() println "${*first}, ${*second}, ${*third}" }