1
2
3
4
5
6
7
8
9
pub trait SequenceFactory {
	type Sequence: Clone + Ord;
	type Delta: std::ops::Add<Output=Self::Delta> + Clone;

	fn base() -> Self::Sequence;
	fn acquire(&mut self, last: Self::Sequence) -> Self::Sequence;

	fn rewind(&self, current: Self::Sequence, amount: &Self::Delta) -> Self::Sequence;
}