Shipping specialization: a story of soundness

You're squeaking by based on lifetime variance here. It's trivial to construct an example where variance doesn't apply:

trait Special {
    fn special(&mut self);
}

impl<T> Special for (T, T) {
    fn special(&mut self) {
        println!("specialized");
    }
}

fn pair<'a, 'b, T>(ts: &mut (&'a T, &'b T)) {
    ts.special();
}

fn main() {
    pair(&mut (&"hi", &"there"));
}

Playground

Mutability forces the lifetimes to be invariant, so now the impl doesn't apply unless the lifetimes are identical.