#![warn(indirect_structural_match)] use std::cell::Cell; trait Foo<'a> { const C: Option>; } impl<'a, T> Foo<'a> for T { const C: Option> = None; } fn main() { let a = 22; let b = Some(Cell::new(&a)); //~^ ERROR `a` does not live long enough [E0597] match b { <() as Foo<'static>>::C => { } _ => { } } }