pub trait TrailRestoration: Collection {
type Mark;
// Required methods
fn mark(&mut self) -> Self::Mark;
fn undo(&mut self, mark: Self::Mark, memory: &mut Vec<Self::Item>);
// Provided method
fn commit(&mut self) { ... }
}pub trait TrailRestoration: Collection {
type Mark;
// Required methods
fn mark(&mut self) -> Self::Mark;
fn undo(&mut self, mark: Self::Mark, memory: &mut Vec<Self::Item>);
// Provided method
fn commit(&mut self) { ... }
}