//@ run-pass | |
#![allow(unused_variables)] | |
trait Nat { | |
const VALUE: usize; | |
} | |
struct Zero; | |
struct Succ<N>(#[allow(dead_code)] N); | |
impl Nat for Zero { | |
const VALUE: usize = 0; | |
} | |
impl<N: Nat> Nat for Succ<N> { | |
const VALUE: usize = N::VALUE + 1; | |
} | |
fn main() { | |
let x: [i32; <Succ<Succ<Succ<Succ<Zero>>>>>::VALUE] = [1, 2, 3, 4]; | |
} |