use crate::{
memory::buffer::provided,
ring::ready::{Error, Ready},
};
type Failure<R> = Error<
<R as Ready>::Ring,
<R as Ready>::Producer,
<<R as Ready>::Producer as provided::Producer>::Error,
<R as Ready>::Registration,
<R as Ready>::Registered,
<R as Ready>::BufferError,
>;
pub trait Create: Ready {
unsafe fn new(ring: Self::Ring, context: &Self::Context) -> Result<Self, Failure<Self>>;
}
pub trait Bind<P>: Ready {
type Cleanup: crate::memory::Cleanup<P>;
unsafe fn bind(
ring: Self::Ring,
layout: Self::Layout,
) -> Result<(Self, Self::Context), Result<P, Self::Cleanup>>;
}