utility_macros_internals/
record.rs

1use crate::error::Result;
2use std::ops::{Index, IndexMut};
3
4pub trait HasRecord {
5    type Record: Record;
6}
7
8pub trait Record: Index<Self::Keys> + IndexMut<Self::Keys> + Sized {
9    type Keys;
10    type Type;
11
12    fn keys(&self) -> Vec<Self::Keys>;
13
14    fn values(&self) -> Vec<&Self::Type>;
15    fn values_mut(&mut self) -> Vec<&mut Self::Type>;
16
17    fn entries(&self) -> Vec<(Self::Keys, &Self::Type)>;
18    fn entires_mut(&mut self) -> Vec<(Self::Keys, &mut Self::Type)>;
19
20    fn try_from_entries(entries: Vec<(Self::Keys, Self::Type)>) -> Result<Self>;
21}