pub trait Hook:
Send
+ Sync
+ 'static {
// Required methods
fn before<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<Option<EvaluationContext>, EvaluationError>> + Send + 'async_trait>>
where Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn after<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<(), EvaluationError>> + Send + 'async_trait>>
where Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn error<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
error: &'life2 EvaluationError,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn finally<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
evaluation_details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
}
Expand description
Hook allows application developers to add arbitrary behavior to the flag evaluation lifecycle. They operate similarly to middleware in many web frameworks.
http://github.com/open-feature/spec/blob/main/specification/sections/04-hooks.md
Required Methods§
Sourcefn before<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<Option<EvaluationContext>, EvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<Option<EvaluationContext>, EvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
This method is called before the flag evaluation.
Sourcefn after<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<(), EvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn after<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = Result<(), EvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
This method is called after the successful flag evaluation.
Sourcefn error<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
error: &'life2 EvaluationError,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn error<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
error: &'life2 EvaluationError,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
This method is called on error during flag evaluation or error in before hook or after hook.
Sourcefn finally<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
evaluation_details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn finally<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
context: &'life1 HookContext<'a>,
evaluation_details: &'life2 EvaluationDetails<Value>,
hints: Option<&'a HookHints>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
This method is called after the flag evaluation, regardless of the result.