index_term.rs 775 B

12345678910111213141516171819202122232425262728293031323334353637
  1. use crate::{Index, LogEntry, Term};
  2. #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
  3. pub(crate) struct IndexTerm {
  4. pub index: Index,
  5. pub term: Term,
  6. }
  7. impl<C> From<&LogEntry<C>> for IndexTerm {
  8. fn from(entry: &LogEntry<C>) -> Self {
  9. Self {
  10. index: entry.index,
  11. term: entry.term,
  12. }
  13. }
  14. }
  15. impl From<IndexTerm> for (Index, Term) {
  16. fn from(index_term: IndexTerm) -> Self {
  17. index_term.unpack()
  18. }
  19. }
  20. impl From<(Index, Term)> for IndexTerm {
  21. fn from(index_term: (Index, Term)) -> Self {
  22. IndexTerm {
  23. index: index_term.0,
  24. term: index_term.1,
  25. }
  26. }
  27. }
  28. impl IndexTerm {
  29. pub fn unpack(&self) -> (Index, Term) {
  30. (self.index, self.term)
  31. }
  32. }