pub struct Event<Subject, Action, Object, Input, Context = ()>where
Action: ?Sized,
Object: ?Sized,{
pub subject: Subject,
pub action: PhantomData<Action>,
pub object: PhantomData<Object>,
pub input: Input,
pub context: Context,
}Expand description
The unit of work in an authorization query, which will either be accepted or rejected by a decision maker.
Fields§
§subject: Subjectthe entity performing the action; typically links back to a user / account; could be represented with an account id, a jwt, or even more information if necessary
action: PhantomData<Action>the action which the subject is trying to perform; typically this will be a
struct dervied from the action macro (e.g. Create<MyObject>)
object: PhantomData<Object>the object wich the subject is attempting to act upon; note that this parameter is only used as a specification of the object’s type and service it belongs to
input: Inputthe data provided which uniquely identifies the object(s) being acted upon; the
type used here can be anything which is recognized as valid input for the specific action (see
StorageAction to see how actions specify their acceptable inputs)
context: Contextany additional data which should or must be provided in order to fulfill the authorization decision; use this for any data which is not referring to objects being acted on
Implementations§
source§impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where
Action: ?Sized,
Object: ?Sized,
impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where Action: ?Sized, Object: ?Sized,
pub fn dissolve( self ) -> (Subject, PhantomData<Action>, PhantomData<Object>, Input, Context)
source§impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where
Action: ?Sized,
Object: ?Sized,
impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where Action: ?Sized, Object: ?Sized,
source§impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where
Action: ?Sized,
Object: ?Sized,
impl<Subject, Action, Object, Input, Context> Event<Subject, Action, Object, Input, Context>where Action: ?Sized, Object: ?Sized,
sourcepub fn builder(
) -> EventBuilder<((), (), (), (), ()), Subject, Action, Object, Input, Context>
pub fn builder( ) -> EventBuilder<((), (), (), (), ()), Subject, Action, Object, Input, Context>
Create a builder for building Event.
On the builder, call .subject(...), .action(...), .object(...), .input(...), .context(...) to set the values of the fields.
Finally, call .build() to create the instance of Event.
Trait Implementations§
source§impl<Subject, A, Objects, Context> ActionType for Event<Subject, A, Objects, Context, ()>where
A: ActionType,
impl<Subject, A, Objects, Context> ActionType for Event<Subject, A, Objects, Context, ()>where A: ActionType,
source§impl<Subject, Action, Object, Input, Context> Clone for Event<Subject, Action, Object, Input, Context>where
Subject: Clone,
Action: Clone + ?Sized,
Object: Clone + ?Sized,
Input: Clone,
Context: Clone,
impl<Subject, Action, Object, Input, Context> Clone for Event<Subject, Action, Object, Input, Context>where Subject: Clone, Action: Clone + ?Sized, Object: Clone + ?Sized, Input: Clone, Context: Clone,
source§impl<Subject, Action, Object, Input, Context> Debug for Event<Subject, Action, Object, Input, Context>where
Subject: Debug,
Action: ActionType + ?Sized,
Object: ObjectType + ?Sized,
Input: Debug,
Context: Debug,
impl<Subject, Action, Object, Input, Context> Debug for Event<Subject, Action, Object, Input, Context>where Subject: Debug, Action: ActionType + ?Sized, Object: ObjectType + ?Sized, Input: Debug, Context: Debug,
source§impl<'de, Subject, Action, Object, Input, Context> Deserialize<'de> for Event<Subject, Action, Object, Input, Context>where
Subject: Deserialize<'de>,
Action: ActionType + ?Sized,
Object: ObjectType + ?Sized,
Input: Deserialize<'de>,
Context: Deserialize<'de>,
impl<'de, Subject, Action, Object, Input, Context> Deserialize<'de> for Event<Subject, Action, Object, Input, Context>where Subject: Deserialize<'de>, Action: ActionType + ?Sized, Object: ObjectType + ?Sized, Input: Deserialize<'de>, Context: Deserialize<'de>,
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<Event<Subject, Action, Object, Input, Context>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<Event<Subject, Action, Object, Input, Context>, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
source§impl<Subject, Action, Object, Input, Context> PartialEq<Event<Subject, Action, Object, Input, Context>> for Event<Subject, Action, Object, Input, Context>where
Subject: PartialEq<Subject>,
Action: PartialEq<Action> + ?Sized,
Object: PartialEq<Object> + ?Sized,
Input: PartialEq<Input>,
Context: PartialEq<Context>,
impl<Subject, Action, Object, Input, Context> PartialEq<Event<Subject, Action, Object, Input, Context>> for Event<Subject, Action, Object, Input, Context>where Subject: PartialEq<Subject>, Action: PartialEq<Action> + ?Sized, Object: PartialEq<Object> + ?Sized, Input: PartialEq<Input>, Context: PartialEq<Context>,
source§impl<Subject, Action, Object, Input, Context> Serialize for Event<Subject, Action, Object, Input, Context>where
Subject: Serialize,
Action: ActionType + ?Sized,
Object: ObjectType + ?Sized,
Input: Serialize,
Context: Serialize,
impl<Subject, Action, Object, Input, Context> Serialize for Event<Subject, Action, Object, Input, Context>where Subject: Serialize, Action: ActionType + ?Sized, Object: ObjectType + ?Sized, Input: Serialize, Context: Serialize,
source§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
impl<Subject, Action, Object, Input, Context> Eq for Event<Subject, Action, Object, Input, Context>where Subject: Eq, Action: Eq + ?Sized, Object: Eq + ?Sized, Input: Eq, Context: Eq,
impl<Subject, Action, Object, Input, Context> StructuralEq for Event<Subject, Action, Object, Input, Context>where Action: ?Sized, Object: ?Sized,
impl<Subject, Action, Object, Input, Context> StructuralPartialEq for Event<Subject, Action, Object, Input, Context>where Action: ?Sized, Object: ?Sized,
Auto Trait Implementations§
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> RefUnwindSafe for Event<Subject, Action, Object, Input, Context>where Action: RefUnwindSafe, Context: RefUnwindSafe, Input: RefUnwindSafe, Object: RefUnwindSafe, Subject: RefUnwindSafe,
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Send for Event<Subject, Action, Object, Input, Context>where Action: Send, Context: Send, Input: Send, Object: Send, Subject: Send,
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Sync for Event<Subject, Action, Object, Input, Context>where Action: Sync, Context: Sync, Input: Sync, Object: Sync, Subject: Sync,
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Unpin for Event<Subject, Action, Object, Input, Context>where Action: Unpin, Context: Unpin, Input: Unpin, Object: Unpin, Subject: Unpin,
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> UnwindSafe for Event<Subject, Action, Object, Input, Context>where Action: UnwindSafe, Context: UnwindSafe, Input: UnwindSafe, Object: UnwindSafe, Subject: UnwindSafe,
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for T
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoSql for T
impl<T> IntoSql for T
§impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
impl<T, U, I> LiftInto<U, I> for Twhere U: LiftFrom<T, I>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> RawSession<T> for Twhere
T: Send + Sync + 'static,
impl<T> RawSession<T> for Twhere T: Send + Sync + 'static,
type Key = ()
type Validation = ()
fn try_decode( self, _: &<T as RawSession<T>>::Key, _: &<T as RawSession<T>>::Validation ) -> Result<T, Error>
fn add_extensions( session: Result<Option<T>, Error>, _: &<T as RawSession<T>>::Key, _: &<T as RawSession<T>>::Validation, extensions: &mut Extensions )
§impl<T, Conn> RunQueryDsl<Conn> for T
impl<T, Conn> RunQueryDsl<Conn> for T
§fn execute<'query, 'conn>(
self,
conn: &'conn mut Conn
) -> <Conn as AsyncConnection>::ExecuteFuture<'conn, 'query>where
Conn: AsyncConnection + Send,
Self: ExecuteDsl<Conn, <Conn as AsyncConnection>::Backend> + 'query,
fn execute<'query, 'conn>( self, conn: &'conn mut Conn ) -> <Conn as AsyncConnection>::ExecuteFuture<'conn, 'query>where Conn: AsyncConnection + Send, Self: ExecuteDsl<Conn, <Conn as AsyncConnection>::Backend> + 'query,
§fn load<'query, U, 'conn>(
self,
conn: &'conn mut Conn
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U, Global>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U, Global>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load<'query, U, 'conn>( self, conn: &'conn mut Conn ) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U, Global>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U, Global>>>where U: Send, Conn: AsyncConnection, Self: LoadQuery<'query, Conn, U> + 'query,
§fn load_stream<'conn, 'query, U>(
self,
conn: &'conn mut Conn
) -> Self::LoadFuture<'conn>where
Conn: AsyncConnection,
U: 'conn,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load_stream<'conn, 'query, U>( self, conn: &'conn mut Conn ) -> Self::LoadFuture<'conn>where Conn: AsyncConnection, U: 'conn, Self: LoadQuery<'query, Conn, U> + 'query,
Stream] with the returned rows. Read more§fn get_result<'query, 'conn, U>(
self,
conn: &'conn mut Conn
) -> AndThen<Self::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<Self::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>, Global>>)) -> Result<U, Error>>, fn(_: Self::Stream<'conn>) -> Map<StreamFuture<Pin<Box<Self::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>, Global>>)) -> Result<U, Error>>>where
U: Send + 'conn,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_result<'query, 'conn, U>( self, conn: &'conn mut Conn ) -> AndThen<Self::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<Self::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>, Global>>)) -> Result<U, Error>>, fn(_: Self::Stream<'conn>) -> Map<StreamFuture<Pin<Box<Self::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>, Global>>)) -> Result<U, Error>>>where U: Send + 'conn, Conn: AsyncConnection, Self: LoadQuery<'query, Conn, U> + 'query,
§fn get_results<'query, U, 'conn>(
self,
conn: &'conn mut Conn
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U, Global>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U, Global>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_results<'query, U, 'conn>( self, conn: &'conn mut Conn ) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U, Global>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U, Global>>>where U: Send, Conn: AsyncConnection, Self: LoadQuery<'query, Conn, U> + 'query,
Vec with the affected rows. Read more§fn first<'query, 'conn, U>(
self,
conn: &'conn mut Conn
) -> AndThen<<Self::Output as LoadQuery<'query, Conn, U>>::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>)) -> Result<U, Error>>, fn(_: <Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>) -> Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>)) -> Result<U, Error>>>where
U: Send + 'conn,
Conn: AsyncConnection,
Self: LimitDsl,
Self::Output: LoadQuery<'query, Conn, U> + Send + 'query,
fn first<'query, 'conn, U>( self, conn: &'conn mut Conn ) -> AndThen<<Self::Output as LoadQuery<'query, Conn, U>>::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>)) -> Result<U, Error>>, fn(_: <Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>) -> Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>, Global>>)) -> Result<U, Error>>>where U: Send + 'conn, Conn: AsyncConnection, Self: LimitDsl, Self::Output: LoadQuery<'query, Conn, U> + Send + 'query,
§impl<Source> Sculptor<HNil, HNil> for Source
impl<Source> Sculptor<HNil, HNil> for Source
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
source§impl<'subject, 'context, 'input, Ctx, T> TryCreate<'subject, 'context, 'input, Ctx> for Twhere
T: Send + Sync,
Ctx: Sync + 'subject + 'context,
impl<'subject, 'context, 'input, Ctx, T> TryCreate<'subject, 'context, 'input, Ctx> for Twhere T: Send + Sync, Ctx: Sync + 'subject + 'context,
source§fn can_create<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: &'input I
) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'context: 'input,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
I: Send + Sync + 'async_trait,
fn can_create<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: &'input I ) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'context: 'input, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, I: Send + Sync + 'async_trait,
source§fn try_create<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<Create<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Create<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Create<Self>, SC, I> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Create<Self>: StorageAction<SC, I>,
I: Send + Sync + 'async_trait,
fn try_create<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<Create<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Create<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Create<Self>, SC, I> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Create<Self>: StorageAction<SC, I>, I: Send + Sync + 'async_trait,
source§fn try_create_one<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<<Create<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Create<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Create<Self>, SC, [I; 1]> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Create<Self>: StorageAction<SC, [I; 1]>,
I: Send + Sync + 'async_trait,
<Create<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator,
<<Create<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
fn try_create_one<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<<Create<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Create<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Create<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Create<Self>, SC, [I; 1]> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Create<Self>: StorageAction<SC, [I; 1]>, I: Send + Sync + 'async_trait, <Create<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator, <<Create<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
IntoIterator.source§impl<'subject, 'context, 'input, Ctx, T> TryDelete<'subject, 'context, 'input, Ctx> for Twhere
T: Send + Sync,
Ctx: Sync + 'subject + 'context,
impl<'subject, 'context, 'input, Ctx, T> TryDelete<'subject, 'context, 'input, Ctx> for Twhere T: Send + Sync, Ctx: Sync + 'subject + 'context,
source§fn can_delete<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: &'input I
) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'context: 'input,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
I: Send + Sync + 'async_trait,
fn can_delete<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: &'input I ) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'context: 'input, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, I: Send + Sync + 'async_trait,
source§fn try_delete<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<Delete<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Delete<Self>, SC, I> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Delete<Self>: StorageAction<SC, I>,
I: Send + Sync + 'async_trait,
fn try_delete<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<Delete<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Delete<Self>, SC, I> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Delete<Self>: StorageAction<SC, I>, I: Send + Sync + 'async_trait,
source§fn try_delete_one<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<<Delete<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Delete<Self>, SC, [I; 1]> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Delete<Self>: StorageAction<SC, [I; 1]>,
I: Send + Sync + 'async_trait,
<Delete<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator,
<<Delete<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
fn try_delete_one<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<<Delete<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Delete<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Delete<Self>, SC, [I; 1]> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Delete<Self>: StorageAction<SC, [I; 1]>, I: Send + Sync + 'async_trait, <Delete<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator, <<Delete<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
IntoIterator.source§impl<'subject, 'context, 'input, Ctx, T> TryRead<'subject, 'context, 'input, Ctx> for Twhere
T: Send + Sync,
Ctx: Sync + 'subject + 'context,
impl<'subject, 'context, 'input, Ctx, T> TryRead<'subject, 'context, 'input, Ctx> for Twhere T: Send + Sync, Ctx: Sync + 'subject + 'context,
source§fn can_read<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: &'input I
) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'context: 'input,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
I: Send + Sync + 'async_trait,
fn can_read<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: &'input I ) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'context: 'input, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, I: Send + Sync + 'async_trait,
source§fn try_read<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<Read<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Read<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Read<Self>, SC, I> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Read<Self>: StorageAction<SC, I>,
I: Send + Sync + 'async_trait,
fn try_read<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<Read<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Read<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Read<Self>, SC, I> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Read<Self>: StorageAction<SC, I>, I: Send + Sync + 'async_trait,
source§fn try_read_one<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<<Read<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Read<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Read<Self>, SC, [I; 1]> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Read<Self>: StorageAction<SC, [I; 1]>,
I: Send + Sync + 'async_trait,
<Read<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator,
<<Read<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
fn try_read_one<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<<Read<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Read<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Read<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Read<Self>, SC, [I; 1]> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Read<Self>: StorageAction<SC, [I; 1]>, I: Send + Sync + 'async_trait, <Read<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator, <<Read<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
IntoIterator.source§impl<'subject, 'context, 'input, Ctx, T> TryUpdate<'subject, 'context, 'input, Ctx> for Twhere
T: Send + Sync,
Ctx: Sync + 'subject + 'context,
impl<'subject, 'context, 'input, Ctx, T> TryUpdate<'subject, 'context, 'input, Ctx> for Twhere T: Send + Sync, Ctx: Sync + 'subject + 'context,
source§fn can_update<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: &'input I
) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'context: 'input,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
I: Send + Sync + 'async_trait,
fn can_update<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: &'input I ) -> Pin<Box<dyn Future<Output = Result<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Ok, <DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'context: 'input, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, I: Send + Sync + 'async_trait,
source§fn try_update<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<Update<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Update<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Update<Self>, SC, I> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Update<Self>: StorageAction<SC, I>,
I: Send + Sync + 'async_trait,
fn try_update<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<Update<Self> as StorageAction<SC, I>>::Ok, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Update<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, I, <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Update<Self>, SC, I> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Update<Self>: StorageAction<SC, I>, I: Send + Sync + 'async_trait,
source§fn try_update_one<'life0, 'async_trait, DM, SC, TC, I>(
ctx: &'life0 Ctx,
input: I
) -> Pin<Box<dyn Future<Output = Result<<<Update<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Update<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait,
'life0: 'subject,
'life0: 'context,
Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait,
DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait,
SC: StorageClient + Send + Sync + 'async_trait,
TC: Send + Sync + TransactionCache + TransactionCacheAction<Update<Self>, SC, [I; 1]> + 'async_trait,
Ctx: AuthorizationContext<DM, SC, TC>,
Update<Self>: StorageAction<SC, [I; 1]>,
I: Send + Sync + 'async_trait,
<Update<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator,
<<Update<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
fn try_update_one<'life0, 'async_trait, DM, SC, TC, I>( ctx: &'life0 Ctx, input: I ) -> Pin<Box<dyn Future<Output = Result<<<Update<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item, ActionError<<DM as DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId>>::Error, <Update<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait, Global>>where 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait, 'life0: 'subject, 'life0: 'context, Self: AsStorage<<SC as StorageClient>::Backend> + 'async_trait, DM: DecisionMaker<<Ctx as AuthorizationContext<DM, SC, TC>>::Subject<'subject>, Update<Self>, Self, [I; 1], <Ctx as AuthorizationContext<DM, SC, TC>>::Context<'context>, <SC as StorageClient>::TransactionId> + Sync + 'async_trait, SC: StorageClient + Send + Sync + 'async_trait, TC: Send + Sync + TransactionCache + TransactionCacheAction<Update<Self>, SC, [I; 1]> + 'async_trait, Ctx: AuthorizationContext<DM, SC, TC>, Update<Self>: StorageAction<SC, [I; 1]>, I: Send + Sync + 'async_trait, <Update<Self> as StorageAction<SC, [I; 1]>>::Ok: IntoIterator, <<Update<Self> as StorageAction<SC, [I; 1]>>::Ok as IntoIterator>::Item: Send,
IntoIterator.