发布 `Tuple` 或 `Func` 特征
作者: mraerino创建于 2020年11月15日更新于 2025年2月18日
标签feature
您的功能请求是否与问题有关?请描述。
我正在尝试基于 warp 实现一种意见主导的 API 构建器模式。示例:
pub struct ApiBuilder<F> {
filter: F,
}
impl<F: Filter<Error = Rejection>> ApiBuilder<F> {
pub fn mount<N, H, Fut, R>(self, filter: N, handler: H) -> ApiBuilder<impl Filter>
where
F::Future: TryFuture,
N: Filter<Error = Rejection, Extract = ()> + Clone + Send,
N::Future: TryFuture,
H: Fn() -> Fut + Clone + Send,
Fut: TryFuture<Ok = R, Error = Rejection> + Send,
R: Reply,
{
let action = filter.and_then(handler);
let filter = self.filter.or(action);
ApiBuilder { filter }
}
}此示例仅在我将 Filter::Extract 限制为空元组时才能编译。如果我想允许使用任意过滤器并暴露值,我需要使用 Func 或 Tuple 特性来引入限制,但目前无法从 crate 用户访问这些特性。
内容来源: seanmonstar/warp