Struct authzen_core::Event
source · pub struct Event<Subject, Action: ?Sized, Object: ?Sized, Input, Context = ()> {
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: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
pub fn dissolve( self ) -> (Subject, PhantomData<Action>, PhantomData<Object>, Input, Context)
source§impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
source§impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> Event<Subject, Action, Object, Input, Context>
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: Clone, Action: Clone + ?Sized, Object: Clone + ?Sized, Input: Clone, Context: Clone> Clone for Event<Subject, Action, Object, Input, Context>
impl<Subject: Clone, Action: Clone + ?Sized, Object: Clone + ?Sized, Input: Clone, Context: Clone> Clone for Event<Subject, Action, Object, Input, Context>
source§impl<Subject, Action, Object, Input, Context> Debug for Event<Subject, Action, Object, Input, Context>where
Subject: Debug,
Action: ?Sized + ActionType,
Object: ?Sized + ObjectType,
Input: Debug,
Context: Debug,
impl<Subject, Action, Object, Input, Context> Debug for Event<Subject, Action, Object, Input, Context>where Subject: Debug, Action: ?Sized + ActionType, Object: ?Sized + ObjectType, 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<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl<Subject: PartialEq, Action: PartialEq + ?Sized, Object: PartialEq + ?Sized, Input: PartialEq, Context: PartialEq> PartialEq<Event<Subject, Action, Object, Input, Context>> for Event<Subject, Action, Object, Input, Context>
impl<Subject: PartialEq, Action: PartialEq + ?Sized, Object: PartialEq + ?Sized, Input: PartialEq, Context: PartialEq> PartialEq<Event<Subject, Action, Object, Input, Context>> for Event<Subject, Action, Object, Input, 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,
impl<Subject: Eq, Action: Eq + ?Sized, Object: Eq + ?Sized, Input: Eq, Context: Eq> Eq for Event<Subject, Action, Object, Input, Context>
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> StructuralEq for Event<Subject, Action, Object, Input, Context>
impl<Subject, Action: ?Sized, Object: ?Sized, Input, Context> StructuralPartialEq for Event<Subject, Action, Object, Input, Context>
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> IntoSql for T
impl<T> IntoSql for T
source§fn into_sql<T>(self) -> Self::Expressionwhere
Self: AsExpression<T> + Sized,
T: SqlType + TypedExpressionType,
fn into_sql<T>(self) -> Self::Expressionwhere Self: AsExpression<T> + Sized, T: SqlType + TypedExpressionType,
self to an expression for Diesel’s query builder. Read moresource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expressionwhere
&'a Self: AsExpression<T>,
T: SqlType + TypedExpressionType,
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expressionwhere &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,
&self to an expression for Diesel’s query builder. Read more§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
§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 )
source§impl<T, Conn> RunQueryDsl<Conn> for T
impl<T, Conn> RunQueryDsl<Conn> for T
source§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,
source§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,
source§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 moresource§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,
source§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 moresource§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::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::TransactionId>>::Error>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait + 'input,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait + 'input, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Create<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Create<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Create<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Create<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait + 'input,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait + 'input, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Delete<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait + 'input,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait + 'input, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Read<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Read<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Read<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Read<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait + 'input,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::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::TransactionId>>::Error>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait + 'input, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Update<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Update<Self> as StorageAction<SC, I>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Update<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where
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::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,
'subject: 'async_trait,
'context: 'async_trait,
'input: 'async_trait,
'life0: 'async_trait + 'subject + 'context,
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::TransactionId>>::Error, <Update<Self> as StorageAction<SC, [I; 1]>>::Error, <TC as TransactionCache>::Error>>> + Send + 'async_trait>>where 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::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, 'subject: 'async_trait, 'context: 'async_trait, 'input: 'async_trait, 'life0: 'async_trait + 'subject + 'context,
IntoIterator.