pub struct FilterRegistry { /* private fields */ }Expand description
Registry of available filter types.
use praxis_filter::FilterRegistry;
let registry = FilterRegistry::with_builtins();
let mut names = registry.available_filters();
names.sort();
assert!(names.contains(&"load_balancer"));
assert!(names.contains(&"request_id"));
assert!(names.contains(&"router"));Implementations§
Source§impl FilterRegistry
impl FilterRegistry
Sourcepub fn with_builtins() -> Self
pub fn with_builtins() -> Self
Create a registry with only the built-in filters.
Sourcepub fn register(
&mut self,
name: &str,
factory: FilterFactory,
) -> Result<(), FilterError>
pub fn register( &mut self, name: &str, factory: FilterFactory, ) -> Result<(), FilterError>
Register a custom filter factory.
Returns an error if a filter with the same name is already registered.
use praxis_filter::{FilterFactory, FilterRegistry, http_builtin};
let mut registry = FilterRegistry::with_builtins();
let err = registry
.register(
"router",
FilterFactory::Http(std::sync::Arc::new(|_| Err("unused".into()))),
)
.unwrap_err();
assert!(err.to_string().contains("duplicate filter name"));§Errors
Returns FilterError if the name is already registered.
Sourcepub fn create(
&self,
name: &str,
config: &Value,
) -> Result<AnyFilter, FilterError>
pub fn create( &self, name: &str, config: &Value, ) -> Result<AnyFilter, FilterError>
Instantiate a filter by type name and config.
use praxis_filter::FilterRegistry;
let registry = FilterRegistry::with_builtins();
let filter = registry.create("router", &serde_yaml::from_str("routes: []").unwrap());
assert!(filter.is_ok());
let err = registry
.create("nonexistent", &serde_yaml::Value::Null)
.err()
.expect("should fail for unknown type");
assert!(err.to_string().contains("unknown filter type"));§Errors
Returns FilterError if the filter type is unknown or instantiation fails.
Sourcepub fn available_filters(&self) -> Vec<&str>
pub fn available_filters(&self) -> Vec<&str>
Returns the names of all registered filter types.
Auto Trait Implementations§
impl !RefUnwindSafe for FilterRegistry
impl !UnwindSafe for FilterRegistry
impl Freeze for FilterRegistry
impl Send for FilterRegistry
impl Sync for FilterRegistry
impl Unpin for FilterRegistry
impl UnsafeUnpin for FilterRegistry
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more