Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Nat {
- const VALUE: usize;
- }
- struct Zero;
- impl Nat for Zero {
- const VALUE: usize = 0;
- }
- struct Succ<K>(K);
- impl<K: Nat> Nat for Succ<K> {
- const VALUE: usize = K::VALUE + 1;
- }
- fn foo<K>(fixed_size_arr: &[u32; <K as Nat>::VALUE]) -> usize
- where
- K: Nat,
- {
- fixed_size_arr.len()
- }
- fn main() {
- println!("{}", foo::<Zero>(&[]));
- println!("{}", foo::<Succ<Zero>>(&[0]));
- println!("{}", foo::<Succ<Succ<Zero>>>(&[0, 0]));
- println!("{}", foo::<Succ<Succ<Succ<Zero>>>>(&[0, 0, 0]));
- }
Add Comment
Please, Sign In to add comment