use crate::{Index, LogEntry, Term}; #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub(crate) struct IndexTerm { pub index: Index, pub term: Term, } impl From<&LogEntry> for IndexTerm { fn from(entry: &LogEntry) -> Self { Self { index: entry.index, term: entry.term, } } } impl From for (Index, Term) { fn from(index_term: IndexTerm) -> Self { index_term.unpack() } } impl From<(Index, Term)> for IndexTerm { fn from(index_term: (Index, Term)) -> Self { IndexTerm { index: index_term.0, term: index_term.1, } } } impl IndexTerm { pub fn unpack(&self) -> (Index, Term) { (self.index, self.term) } }