Trait Hook

Source
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§

Source

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.

Source

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.

Source

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.

Source

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.

Implementors§

Source§

impl Hook for LoggingHook

Source§

impl Hook for MockHook

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