#![allow(missing_docs)]
use intrusive_collections::{
Adapter, DefaultLinkOps, DefaultPointerOps, intrusive_adapter, linked_list,
};
use lock_api::RawMutex;
use crate::requests::Request;
use crate::{AtomicLink, NoopLock};
intrusive_adapter!(pub SyncRequestAdapter = Box<Request<parking_lot::RawMutex, AtomicLink>>: Request<parking_lot::RawMutex, AtomicLink> { link: AtomicLink });
intrusive_adapter!(pub LocalRequestAdapter = Box<Request<NoopLock, linked_list::Link>>: Request<NoopLock, linked_list::Link> { link: linked_list::Link });
pub trait IntrusiveAdapter<M, L>:
Adapter<PointerOps = DefaultPointerOps<Box<Request<M, L>>>>
where
M: RawMutex,
L: DefaultLinkOps + Default,
{
fn new() -> Self;
}
impl IntrusiveAdapter<parking_lot::RawMutex, AtomicLink> for SyncRequestAdapter {
fn new() -> Self {
Self::new()
}
}
impl IntrusiveAdapter<NoopLock, linked_list::Link> for LocalRequestAdapter {
fn new() -> Self {
Self::new()
}
}