3 #![allow(incomplete_features)]
4 #![feature(const_mut_refs)]
5 #![feature(inline_const)]
6 #![feature(inline_const_pat)]
8 use std::marker::PhantomData;
10 // rust-lang/rust#78174: ICE: "cannot convert ReErased to a region vid"
13 const { concat!("fo", "o") } => (),
18 #[derive(PartialEq, Eq)]
19 pub struct InvariantRef<'a, T: ?Sized>(&'a T, PhantomData<&'a mut &'a T>);
21 impl<'a, T: ?Sized> InvariantRef<'a, T> {
22 pub const fn new(r: &'a T) -> Self {
23 InvariantRef(r, PhantomData)
27 fn match_invariant_ref<'a>() {
28 match const { InvariantRef::<'a, _>::new(&()) } {
29 const { InvariantRef::<'a, ()>::new(&()) } => {
36 match_invariant_ref();