Guest User

Untitled

a guest
Dec 11th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.51 KB | None | 0 0
  1. trait Nat {
  2. const VALUE: usize;
  3. }
  4.  
  5. struct Zero;
  6.  
  7. impl Nat for Zero {
  8. const VALUE: usize = 0;
  9. }
  10.  
  11. struct Succ<K>(K);
  12.  
  13. impl<K: Nat> Nat for Succ<K> {
  14. const VALUE: usize = K::VALUE + 1;
  15. }
  16.  
  17. fn foo<K>(fixed_size_arr: &[u32; <K as Nat>::VALUE]) -> usize
  18. where
  19. K: Nat,
  20. {
  21. fixed_size_arr.len()
  22. }
  23.  
  24. fn main() {
  25. println!("{}", foo::<Zero>(&[]));
  26. println!("{}", foo::<Succ<Zero>>(&[0]));
  27. println!("{}", foo::<Succ<Succ<Zero>>>(&[0, 0]));
  28. println!("{}", foo::<Succ<Succ<Succ<Zero>>>>(&[0, 0, 0]));
  29. }
Add Comment
Please, Sign In to add comment