File: example.rs

package info (click to toggle)
rust-enum-unitary 0.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 140 kB
  • sloc: sh: 5; makefile: 4
file content (38 lines) | stat: -rw-r--r-- 1,488 bytes parent folder | download
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
26
27
28
29
30
31
32
33
34
35
36
37
38
extern crate enum_unitary;
use enum_unitary::enum_unitary;

enum_unitary!{
  #[derive(Debug, PartialEq)]
  pub enum Myenum {
    A, B, C
  }
}

fn main() {
  use enum_unitary::{FromPrimitive, ToPrimitive};

  assert_eq!(enum_iterator::cardinality::<Myenum>(), 3);
  assert_eq!(Into::<usize>::into (Myenum::A), 0);
  assert_eq!(Into::<usize>::into (Myenum::B), 1);
  assert_eq!(Into::<usize>::into (Myenum::C), 2);
  assert_eq!(Some (Myenum::A), Myenum::from_usize (0));
  assert_eq!(Some (Myenum::B), Myenum::from_usize (1));
  assert_eq!(Some (Myenum::C), Myenum::from_usize (2));
  assert_eq!(None, Myenum::from_usize (3));
  assert_eq!(Some (0), Myenum::A.to_usize());
  assert_eq!(Some (1), Myenum::B.to_usize());
  assert_eq!(Some (2), Myenum::C.to_usize());
  assert_eq!(enum_iterator::first::<Myenum>().unwrap(), Myenum::A);
  assert_eq!(enum_iterator::last::<Myenum>().unwrap(),  Myenum::C);
  let mut i = enum_iterator::all::<Myenum>();
  assert_eq!(i.next(), Some (Myenum::A));
  assert_eq!(i.next(), Some (Myenum::B));
  assert_eq!(i.next(), Some (Myenum::C));
  assert_eq!(i.next(), None);
  assert_eq!(enum_iterator::next (&Myenum::A), Some (Myenum::B));
  assert_eq!(enum_iterator::previous (&Myenum::A), None);
  assert_eq!(enum_iterator::next (&Myenum::B), Some (Myenum::C));
  assert_eq!(enum_iterator::previous (&Myenum::B), Some (Myenum::A));
  assert_eq!(enum_iterator::next (&Myenum::C), None);
  assert_eq!(enum_iterator::previous (&Myenum::C), Some (Myenum::B));
}