warning: to use a constant of type `std::cell::Cell` in a pattern, `std::cell::Cell` must be annotated with `#[derive(PartialEq, Eq)]` --> $DIR/issue-55511.rs:16:9 | LL | <() as Foo<'static>>::C => { } | ^^^^^^^^^^^^^^^^^^^^^^^ | note: lint level defined here --> $DIR/issue-55511.rs:1:9 | LL | #![warn(indirect_structural_match)] | ^^^^^^^^^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #62411 error[E0597]: `a` does not live long enough --> $DIR/issue-55511.rs:13:28 | LL | let b = Some(Cell::new(&a)); | ^^ borrowed value does not live long enough ... LL | <() as Foo<'static>>::C => { } | ----------------------- type annotation requires that `a` is borrowed for `'static` ... LL | } | - `a` dropped here while still borrowed error: aborting due to previous error For more information about this error, try `rustc --explain E0597`.