1pub(crate) struct IdGenerator {
2 next_id: u8,
3}
4
5impl IdGenerator {
6 pub fn new() -> Self {
7 IdGenerator { next_id: 0 }
8 }
9
10 pub fn get_new_id(&mut self) -> u8 {
11 let id = self.next_id;
12 self.next_id += 1;
13 id
14 }
15}
16
17impl Default for IdGenerator {
18 fn default() -> Self {
19 Self::new()
20 }
21}
22
23#[cfg(test)]
24mod tests {
25
26 use super::IdGenerator;
27
28 #[test]
29 fn generator_generates_new_ids() {
30 let mut gen = IdGenerator::new();
31
32 assert_eq!(0, gen.get_new_id());
33 assert_eq!(1, gen.get_new_id());
34 assert_eq!(2, gen.get_new_id());
35 }
36}