use core::mem;
use core::num::NonZero;
use core::ops::{Deref, DerefMut};
use crate::ffi::binding::mirilla_id_t;
pub type TargetId = Id;
pub type PeepholeId = Id;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
pub struct Id(pub NonZero<mirilla_id_t>);
impl Deref for Id {
type Target = NonZero<mirilla_id_t>;
fn deref(&self) -> &Self::Target {
let Self(target_value) = self;
target_value
}
}
impl DerefMut for Id {
fn deref_mut(&mut self) -> &mut Self::Target {
let Self(target_value) = self;
target_value
}
}
const _: () = const {
use crate::ffi::binding;
assert!(mem::size_of::<Option<Id>>() == mem::size_of::<binding::mirilla_id_t>());
assert!(mem::align_of::<Option<Id>>() == mem::align_of::<binding::mirilla_id_t>());
assert!(
mem::size_of::<Option<TargetId>>() == mem::size_of::<binding::mirilla_map_target_id_t>()
);
assert!(
mem::align_of::<Option<TargetId>>() == mem::align_of::<binding::mirilla_map_target_id_t>()
);
assert!(
mem::size_of::<Option<PeepholeId>>()
== mem::size_of::<binding::mirilla_map_peephole_id_t>()
);
assert!(
mem::align_of::<Option<PeepholeId>>()
== mem::align_of::<binding::mirilla_map_peephole_id_t>()
);
};