pub trait HandlerBuilder<'a, OldRD>
where Self: Handler + Sized,
{ // Provided methods fn at<H>( self, path: &'a [&'a str], handler: H ) -> ForkingHandler<'a, H, Self> where H: Handler + Sized { ... } fn at_with_attributes<H>( self, path: &'a [&'a str], attributes: &'a [Attribute], handler: H ) -> ForkingHandler<'a, ConstantSingleRecordReport<'a, H>, Self> where H: Handler + Sized { ... } fn below<H>( self, path: &'a [&'a str], handler: H ) -> ForkingTreeHandler<'a, H, Self> { ... } }
Expand description

Trait implemented by default on all handlers that lets the user stack them using a builder-like syntax.

Note that the resulting ForkingRequestData<ForkingRequestData<…>,()> enums that might look wasteful on paper are optimized into the minimum necessary size since https://github.com/rust-lang/rust/pull/45225. They are, however, suboptimal when it comes to how many times the options are read.

Provided Methods§

source

fn at<H>(self, path: &'a [&'a str], handler: H) -> ForkingHandler<'a, H, Self>
where H: Handler + Sized,

Divert requests arriving at path into the given handler.

The handler will not not see the Uri-Path (and Uri-Host, as this builder doesn’t do virtual hosting yet) options any more; see the top-level module documentation on Options Hiding for rationale.

If both the previous tree and the new handler are Reporting, so is the result.

source

fn at_with_attributes<H>( self, path: &'a [&'a str], attributes: &'a [Attribute], handler: H ) -> ForkingHandler<'a, ConstantSingleRecordReport<'a, H>, Self>
where H: Handler + Sized,

Divert requests arriving at path into the given handler, and announce them with the given attributes in .well-known/core.

Any reporting the handler would have done is overridden.

This is a shorthand for .at(ConstantSingleRecordReport::new(h, attributes)).

source

fn below<H>( self, path: &'a [&'a str], handler: H ) -> ForkingTreeHandler<'a, H, Self>

Divert requests arriving with an Uri-Path starting with path to the given handler.

Only remaining Uri-Path options will be visible to the handler; those expressed in path (and Uri-Host, see [.at()]) are hidden.

If both the previous tree and the new handler are Reporting, so is the result.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a, OldRD, OldH> HandlerBuilder<'a, OldRD> for OldH
where Self: Handler<RequestData = OldRD> + Sized,