utility_macros_internals/
record.rs1use 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}