gpt4 book ai didi

rust - 如何在翘曲中重用路径?

转载 作者:行者123 更新时间:2023-12-03 11:44:12 25 4
gpt4 key购买 nike

我想要一个带有Rust扭曲的分层路由结构,如下所示:

/  
/api
/api/public
/api/public/articles
/api/admin
/api/admin/articles

我想像下面的代码中那样定义路由范围,这当然是 而不是起作用:
// *** Again: this code does NOT work.
// *** I've put it here simply for demonstration purposes

pub fn get_routes() -> impl Filter<Extract = impl warp::Reply, Error = warp::Rejection> + Clone {

let articles = warp::path("articles")
.map(|| "articles index");
let public = warp::path("public")
.and(warp::path::end())
.map(|| "public index")
.or(articles);
let admin = warp::path("admin")
.and(warp::path::end())
.map(|| "admin index")
.or(articles);
let api = warp::path("api")
.and(warp::path::end())
.map(|| "api index")
.or(admin);
let root_index = warp::path::end()
.map(|| "root index")
.or(api);

root_index

}
我有什么办法可以实现 路线,即带 rust 翘曲的作用域?

最佳答案

假设我正确地解释了它,您想重用路径,这样,如果要更改"api",则只需要在一个地方进行。
如果是这样,那么是的,您几乎可以完全按照自己的想象来做。您只需要将warp::path("...")分配给一个变量,然后就可以将其重新用于map()and(),如下所示:

use warp::path::end;

let articles = warp::path("articles")
.and(end())
.map(|| "articles index");

let public = warp::path("public");
let public = public
.and(end())
.map(|| "public index")
.or(public.and(articles));

let admin = warp::path("admin");
let admin = admin
.and(end())
.map(|| "admin index")
.or(admin.and(articles));

let api = warp::path("api");
let api = api
.and(end())
.map(|| "api index")
.or(api.and(admin))
.or(api.and(public));

let root_index = end()
.map(|| "root index")
.or(api);

关于rust - 如何在翘曲中重用路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65490367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com