1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// check-pass trait TraitA { const VALUE: usize; } struct A; impl TraitA for A { const VALUE: usize = 1; } trait TraitB { type MyA: TraitA; const VALUE: usize = Self::MyA::VALUE; } struct B; impl TraitB for B { type MyA = A; } fn main() { let _ = [0; A::VALUE]; let _ = [0; B::VALUE]; // Indirectly refers to `A::VALUE` }