#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct MessageHandle(pub(crate) u32);
#[derive(Clone, Copy, Debug, Default, Hash, Ord, PartialEq, PartialOrd, Eq)]
pub struct MessageId(pub [u8; 32]);
impl MessageId {
pub const fn zero() -> Self {
Self([0u8; 32])
}
pub fn from_slice(slice: &[u8]) -> Self {
if slice.len() != 32 {
panic!("The slice must contain 32 u8 to be casted to MessageId");
}
let mut id = Self([0u8; 32]);
id.0.copy_from_slice(slice);
id
}
pub const fn as_slice(&self) -> &[u8] {
&self.0
}
pub(crate) const fn as_ptr(&self) -> *const [u8; 32] {
self.0.as_ptr() as *const [u8; 32]
}
pub(crate) fn as_mut_ptr(&mut self) -> *mut [u8; 32] {
self.0.as_mut_ptr() as *mut [u8; 32]
}
}
#[derive(Clone, Copy, Debug, Default, Hash, Ord, PartialEq, PartialOrd, Eq)]
pub struct ActorId(pub [u8; 32]);
impl From<u64> for ActorId {
fn from(value: u64) -> Self {
let mut id = ActorId::zero();
id.0[0..8].copy_from_slice(&value.to_le_bytes());
id
}
}
impl ActorId {
pub const fn zero() -> Self {
Self([0; 32])
}
pub fn from_slice(slice: &[u8]) -> Self {
if slice.len() != 32 {
panic!("The slice must contain 32 u8 to be casted to ActorId");
}
let mut id = ActorId::zero();
id.0.copy_from_slice(slice);
id
}
pub const fn as_slice(&self) -> &[u8] {
&self.0
}
pub(crate) const fn as_ptr(&self) -> *const [u8; 32] {
self.0.as_ptr() as *const [u8; 32]
}
pub(crate) fn as_mut_ptr(&mut self) -> *mut [u8; 32] {
self.0.as_mut_ptr() as *mut [u8; 32]
}
}
#[derive(Clone, Copy, Debug, Default, Hash, Ord, PartialEq, PartialOrd, Eq)]
pub struct ReservationId(pub [u8; 32]);
impl ReservationId {
pub const fn zero() -> Self {
Self([0; 32])
}
pub const fn as_slice(&self) -> &[u8] {
self.0.as_slice()
}
pub(crate) const fn as_ptr(&self) -> *const [u8; 32] {
self.0.as_ptr() as *const [u8; 32]
}
}
impl From<[u8; 32]> for ReservationId {
fn from(value: [u8; 32]) -> Self {
Self(value)
}
}
#[derive(Clone, Copy, Debug, Default, Hash, Ord, PartialEq, PartialOrd, Eq)]
pub struct CodeId(pub [u8; 32]);
impl From<[u8; 32]> for CodeId {
fn from(value: [u8; 32]) -> Self {
Self(value)
}
}
impl CodeId {
pub fn from_slice(slice: &[u8]) -> Self {
if slice.len() != 32 {
panic!("The slice must contain 32 u8 to be casted to CodeId");
}
let mut id = CodeId([0u8; 32]);
id.0.copy_from_slice(slice);
id
}
pub const fn as_slice(&self) -> &[u8] {
&self.0
}
}