use postcard::experimental::max_size::MaxSize;
use serde::{Deserialize, Serialize};
#[derive(Default, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash, Debug, MaxSize)]
pub(crate) struct MutateIndex(#[serde(with = "postcard::fixint::le")] u16);
impl MutateIndex {
pub(crate) fn advance(&mut self) -> Self {
let next = *self;
self.0 = self.0.wrapping_add(1);
next
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn advance() {
let mut index = MutateIndex(u16::MAX - 1);
assert_eq!(index.advance(), MutateIndex(u16::MAX - 1));
assert_eq!(index, MutateIndex(u16::MAX));
assert_eq!(index.advance(), MutateIndex(u16::MAX));
assert_eq!(index, MutateIndex(0));
}
}