Registry

Struct Registry 

Source
pub struct Registry<P> { /* private fields */ }
Expand description

Registry for constructing interceptor chains.

Registry wraps an interceptor chain and allows adding more interceptors via the with method. The chain can be extracted with build.

§Example

use rtc_interceptor::Registry;

// Create a new registry
let mut registry = Registry::new();

// Add interceptors (can be done in helper functions)
registry = registry
    .with(SenderReportBuilder::new().build())
    .with(ReceiverReportBuilder::new().build());

// Build the final chain
let chain = registry.build();

§Helper Function Pattern

fn register_default_interceptors<P: Interceptor>(
    registry: Registry<P>,
) -> Registry<impl Interceptor> {
    registry
        .with(SenderReportBuilder::new().build())
        .with(ReceiverReportBuilder::new().build())
}

let registry = Registry::new();
let registry = register_default_interceptors(registry);
let chain = registry.build();

Implementations§

Source§

impl Registry<NoopInterceptor>

Source

pub fn new() -> Self

Create a new empty registry.

This creates a NoopInterceptor as the innermost layer.

§Example
use rtc_interceptor::Registry;

let registry = Registry::new();
Source§

impl<P: Interceptor> Registry<P>

Source

pub fn from(inner: P) -> Self

Create a registry from an existing interceptor.

§Example
let custom = MyCustomInterceptor::new();
let registry = Registry::from(custom);
Source

pub fn with<O, F>(self, f: F) -> Registry<O>
where F: FnOnce(P) -> O, O: Interceptor,

Wrap the current chain with another interceptor.

Returns a new Registry with the updated chain type.

§Example
let registry = Registry::new()
    .with(SenderReportBuilder::new().build())
    .with(ReceiverReportBuilder::new().build());
Source

pub fn build(self) -> P

Build and return the interceptor chain.

Consumes the registry and returns the inner interceptor chain.

§Example
let registry = Registry::new().with(MyInterceptor::new);
let chain = registry.build();

Trait Implementations§

Source§

impl<P: Clone> Clone for Registry<P>

Source§

fn clone(&self) -> Registry<P>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Registry<NoopInterceptor>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<P> Freeze for Registry<P>
where P: Freeze,

§

impl<P> RefUnwindSafe for Registry<P>
where P: RefUnwindSafe,

§

impl<P> Send for Registry<P>
where P: Send,

§

impl<P> Sync for Registry<P>
where P: Sync,

§

impl<P> Unpin for Registry<P>
where P: Unpin,

§

impl<P> UnwindSafe for Registry<P>
where P: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,