pub fn option_layer<L>(layer: Option<L>) -> Either<L, Identity>
Expand description
Convert an Option<Layer>
into a Layer
.
If the layer is a Some
it’ll be applied, otherwise not.
§Example
use axum_extra::middleware::option_layer;
use axum::{Router, routing::get};
use std::time::Duration;
use tower_http::timeout::TimeoutLayer;
let timeout_layer = option_timeout.map(TimeoutLayer::new);
let app = Router::new()
.route("/", get(|| async {}))
.layer(option_layer(timeout_layer));
§Difference between this and tower::util::option_layer
tower::util::option_layer
always changes the error type to BoxError
which requires
using HandleErrorLayer
when used with axum, even if the layer you’re applying uses
Infallible
.
axum_extra::middleware::option_layer
on the other hand doesn’t change the error type so can
be applied directly.