#1143·warp

条件路由

作者: jkassis创建于 2025年10月17日更新于 2025年10月17日
标签feature

您的功能请求是否与问题有关?请描述。

请描述您想要的解决方案

从示例中,我们有这个函数:

pub fn assets_filter() -> BoxedFilter<(impl Reply,)> {
    warp::path("assets")
        .and(warp::fs::dir("./assets"))
        .boxed()
}

我想能够做到这样的事情:

pub fn assets_filter() -> BoxedFilter<(impl Reply,)> {
    if let Some(optional_filter) = optional_filter {
        warp::path("assets")
            .and(warp::fs::dir("./assets"))
            .or(optional_filter)
            .boxed()
    } else {
        warp::path("assets").and(warp::fs::dir("./assets")).boxed()
    }
}

请描述您考虑过的其他方案

我尝试了几乎所有的方法来让类型正常工作。虽然返回 BoxedFilter<(impl Reply,)> 是可以的,但从函数体中返回两个不同的变体是不可接受的。

内容来源: seanmonstar/warp