Skip to main content

dope_sys/engine/admit/
raw.rs

1use crate::{
2    engine::admit::Context,
3    io::{file, request},
4};
5
6type Borrowed<'a, C> = request::Borrowed<'a, <<<C as Context>::Native as request::Source<
7    <C as Context>::Inputs,
8>>::Raw as request::Lower>::Target>;
9type File<'a, C> = <<C as Context>::Native as file::File>::Request<'a>;
10
11/// Consumes the exact native requests whose pointees remain owned by the host.
12pub trait Retain<C: Context>: Sized {
13    /// # Safety
14    /// Every encoded address remains live through terminal completion or quiescence.
15    unsafe fn retain(self, request: Borrowed<'_, C>, key: C::Key);
16
17    /// # Safety
18    /// Every file request borrow remains live through terminal completion or quiescence.
19    unsafe fn file(self, request: File<'_, C>, key: C::Key);
20}