trait 方法中的 impl Trait

版本新特性 / Rust 1.75

// *** before: ***
// a trait method could not return impl Trait: an associated type was written
trait Source {
    type Iter: Iterator<Item = u32>;
    fn values(&self) -> Self::Iter;
}

// *** in version 1.75: ***
trait Source {
    fn values(&self) -> impl Iterator<Item = u32>;
}

struct Range10;

impl Source for Range10 {
    fn values(&self) -> impl Iterator<Item = u32> {
        0..10
    }
}