|  | //@ known-bug: #98322 | 
|  |  | 
|  | #![feature(generic_const_exprs)] | 
|  |  | 
|  | // Main function seems irrelevant | 
|  | fn main() {} | 
|  |  | 
|  | // Constant must be provided via an associated constant in a trait | 
|  | pub trait ConstTrait { | 
|  | const ASSOC_CONST: usize; | 
|  | } | 
|  |  | 
|  | // For some reason I find it's necessary to have an implementation of this trait that recurses | 
|  | pub trait OtherTrait | 
|  | { | 
|  | fn comm(self); | 
|  | } | 
|  |  | 
|  | // There must be a blanket impl here | 
|  | impl<T> OtherTrait for T where | 
|  | T: ConstTrait, | 
|  | [();T::ASSOC_CONST]: Sized, | 
|  | { | 
|  | fn comm(self) { | 
|  | todo!() | 
|  | } | 
|  | } | 
|  |  | 
|  | // The struct must be recursive | 
|  | pub struct RecursiveStruct(Box<RecursiveStruct>); | 
|  |  | 
|  | // This implementation must exist, and it must recurse into its child | 
|  | impl OtherTrait for RecursiveStruct { | 
|  | fn comm(self) { | 
|  | (self.0).comm(); | 
|  | } | 
|  | } |