use std::{mem::size_of, ptr};
use crate::{
buffer,
buffer::storage::{provided::arena, regions},
};
#[derive(Debug)]
pub struct Owner<'d> {
pub(super) entry: ptr::NonNull<arena::Entry<'d>>,
}
const _: () = assert!(size_of::<Owner<'static>>() == size_of::<usize>());
impl regions::End for Owner<'_> {
const EMPTY: Option<Self> = None;
}
impl buffer::Residency for Owner<'_> {
fn resident(&self) -> usize {
(unsafe { arena::Entry::resident(self.entry) }) as usize
}
}
impl Drop for Owner<'_> {
fn drop(&mut self) {
unsafe { arena::Entry::release(self) };
}
}