| //@ 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(); |
| } |
| } |