1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::struct_mut::ValueMut;

pub struct NextId {
    counter: ValueMut<u64>,
}

impl NextId {
    pub fn new() -> NextId {
        NextId {
            counter: ValueMut::new(0),
        }
    }

    pub fn get_next_id(&self) -> u64 {
        let current = self.counter.get() + 1;
        self.counter.set(current);
        current
    }

    #[cfg(test)]
    pub fn current(&self) -> u64 {
        self.counter.get()
    }
}