use std::str;
use crate::field::{Entry, Lower, Name, Value, metadata::map::record, storage};
pub(in crate::field) fn name(name: Name<&[u8]>) -> &str {
unsafe { str::from_utf8_unchecked(name.get()) }
}
pub trait Admit<T>: Sized {
unsafe fn from_raw(owner: T) -> Self;
}
impl<T: storage::Bytes> Admit<T> for Name<T> {
unsafe fn from_raw(owner: T) -> Self {
Self(owner)
}
}
impl<T: storage::Bytes> Admit<T> for Lower<T> {
unsafe fn from_raw(owner: T) -> Self {
Self(owner)
}
}
impl<T: storage::Bytes> Admit<T> for Value<T> {
unsafe fn from_raw(owner: T) -> Self {
Self(owner)
}
}
impl<'a> Admit<record::Entry<'a>> for Entry<'a> {
unsafe fn from_raw(owner: record::Entry<'a>) -> Self {
Self(owner)
}
}