Lines Matching full:backend
16 /// The "backend" of a lock.
28 /// [`lock`]: Backend::lock
29 /// [`unlock`]: Backend::unlock
30 /// [`relock`]: Backend::relock
31 pub unsafe trait Backend { interface
37 /// [`lock`]: Backend::lock
38 /// [`unlock`]: Backend::unlock
57 /// Callers must ensure that [`Backend::init`] has been previously called.
72 /// Callers must ensure that `guard_state` comes from a previous call to [`Backend::lock`] (or
73 /// variant) that has been unlocked with [`Backend::unlock`] and will be relocked now.
83 /// [`Backend`] specified as the generic parameter `B`.
85 pub struct Lock<T: ?Sized, B: Backend> {
101 unsafe impl<T: ?Sized + Send, B: Backend> Send for Lock<T, B> {}
105 unsafe impl<T: ?Sized + Send, B: Backend> Sync for Lock<T, B> {}
107 impl<T, B: Backend> Lock<T, B> {
122 impl<T: ?Sized, B: Backend> Lock<T, B> {
135 /// Allows mutual exclusion primitives that implement the [`Backend`] trait to automatically unlock
139 pub struct Guard<'a, T: ?Sized, B: Backend> {
146 unsafe impl<T: Sync + ?Sized, B: Backend> Sync for Guard<'_, T, B> {}
148 impl<T: ?Sized, B: Backend> Guard<'_, T, B> {
161 impl<T: ?Sized, B: Backend> core::ops::Deref for Guard<'_, T, B> {
170 impl<T: ?Sized, B: Backend> core::ops::DerefMut for Guard<'_, T, B> {
177 impl<T: ?Sized, B: Backend> Drop for Guard<'_, T, B> {
184 impl<'a, T: ?Sized, B: Backend> Guard<'a, T, B> {