use crate::error::ObjectError;
use crate::value::Object;
use crate::gid::Gid;
pub fn object_id_bytes(bytes: &[u8]) -> [u8; 32] {
*blake3::hash(bytes).as_bytes()
}
pub fn gid_from_envelope(bytes: &[u8]) -> Option<Gid> {
let family = crate::family::Family::from_code(*bytes.get(5)?)?;
Some(Gid::new(family, object_id_bytes(bytes)))
}
pub fn object_id(obj: &Object, limits: &crate::limits::Limits) -> Result<Gid, ObjectError> {
let bytes = crate::encode::encode_object(obj, limits)?;
Ok(Gid::new(obj.family, object_id_bytes(&bytes)))
}