use std::mem::MaybeUninit;
use std::num::NonZero;
use std::ptr::NonNull;
use crate::SpanBuilder;
use crate::mem::BlockRef;
pub type BlockSize = u32;
#[derive(Debug)]
pub struct Block {
ptr: NonNull<MaybeUninit<u8>>,
len: NonZero<BlockSize>,
#[expect(clippy::struct_field_names, reason = "acceptable, block_ref is standard term in many places")]
block_ref: BlockRef,
}
impl Block {
#[must_use]
pub const unsafe fn new(ptr: NonNull<MaybeUninit<u8>>, len: NonZero<BlockSize>, block_ref: BlockRef) -> Self {
Self { ptr, len, block_ref }
}
pub(crate) fn into_span_builder(self) -> SpanBuilder {
unsafe { SpanBuilder::new(self.ptr, self.len, self.block_ref) }
}
}