新版本的变更 / Rust 1.82

// *** before: ***
// что именно захватил возвращённый impl Trait, задавали окольно:
// фиктивным типом-свидетелем или лишним параметром времени жизни
fn ids<'a>(v: &'a [String]) -> impl Iterator<Item = usize> + 'a {
    0..v.len()
}

// *** in version 1.82: ***
// список захваченного пишется прямо: пусто - значит ничего не держим
fn ids(v: &[String]) -> impl Iterator<Item = usize> + use<> {
    0..v.len()
}

fn names<'a>(v: &'a [String]) -> impl Iterator<Item = &'a String> + use<'a> {
    v.iter()
}