use crate::driver::lifecycle::{quiesce, routing};
#[must_use]
#[repr(transparent)]
pub struct Finalize<'a, 'd> {
finalization: quiesce::Final<'a, 'd>,
}
impl<'a, 'd> Finalize<'a, 'd> {
#[doc(hidden)]
pub fn new(finalization: quiesce::Final<'a, 'd>) -> Self {
Self { finalization }
}
#[doc(hidden)]
pub fn reborrow(&mut self) -> Finalize<'_, 'd> {
Finalize {
finalization: self.finalization.reborrow(),
}
}
pub fn retire_route<const ID: u8>(&mut self, route: &routing::Route<'d, ID>) {
route.finish(self.finalization.context());
}
pub fn stage_route<const ID: u8>(&mut self, route: &routing::StorageRoute<'d, ID>) {
route.stage();
}
}
const _: () = assert!(
std::mem::size_of::<Finalize<'static, 'static>>()
== std::mem::size_of::<quiesce::Final<'static, 'static>>()
);