1
2
3
4
5
6
7
8
9
10
11
12
13
14
use impl_tools::autoimpl;
use impl_trait_for_tuples::impl_for_tuples;

#[impl_for_tuples(3)]
#[autoimpl(for<T: trait + ?Sized> &mut T)]
pub trait CheckpointTracer {
    fn trace_checkpoint(&mut self) {}

    /// Discard the top checkpoint for validity mark
    fn trace_checkpoint_discard(&mut self) {}

    /// Mark the traces to the top checkpoint as "valid = false"
    fn trace_checkpoint_revert(&mut self) {}
}