mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 18:32:42 +00:00
26 lines
783 B
Rust
26 lines
783 B
Rust
use warp::{Filter, Rejection, filters::BoxedFilter};
|
|
|
|
/// Mixin trait for `Filter` providing the unifying-or method.
|
|
pub trait UnifyingOrFilter: Filter<Error = Rejection> + Sized + Send + Sync + 'static
|
|
where
|
|
Self::Extract: Send,
|
|
{
|
|
/// Unifying `or`.
|
|
///
|
|
/// This is a shorthand for `self.or(other).unify().boxed()`, which is useful because it keeps
|
|
/// the filter type simple and prevents type-checker explosions.
|
|
fn uor<F>(self, other: F) -> BoxedFilter<Self::Extract>
|
|
where
|
|
F: Filter<Extract = Self::Extract, Error = Rejection> + Clone + Send + Sync + 'static,
|
|
{
|
|
self.or(other).unify().boxed()
|
|
}
|
|
}
|
|
|
|
impl<F> UnifyingOrFilter for F
|
|
where
|
|
F: Filter<Error = Rejection> + Sized + Send + Sync + 'static,
|
|
F::Extract: Send,
|
|
{
|
|
}
|