armour 0.30.27

DDL and serialization for key-value storage
Documentation
use crate::{Cid, GetType, KeyScheme, Record, Typ, record::record_types_tuple};

#[derive(Debug, Clone, Copy)]
pub struct EntityAttribute {
    pub name: &'static str,
    pub key_scheme: KeyScheme,
    pub val_static_size: Option<usize>,
    pub ty: Typ,
    /// key group bits
    pub group_bits: u32,
    pub version: u16,
}

impl EntityAttribute {
    pub const fn from_ty<Item: Record + GetType>() -> EntityAttribute {
        let name = <Item as Record>::NAME;
        let (key_scheme, ty) = record_types_tuple::<Item>();
        let val_static_size = <Item as Record>::SIZE;
        let group_bits = <<Item as Record>::SelfId as Cid>::GROUP_BITS;
        let version = <Item as Record>::VERSION;

        EntityAttribute {
            name,
            key_scheme,
            val_static_size,
            ty,
            group_bits,
            version,
        }
    }
}