rust rocket读取自定义配置
Posted 风的低吟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rust rocket读取自定义配置相关的知识,希望对你有一定的参考价值。
Rocket.toml
[default.app] meili_url = "http://host:port/" meili_master_key = "key"
main.rs
#[derive(Serialize, Deserialize, Clone)]
#[serde(crate = "rocket::serde")]
struct AppConfig
meili_url: String,
meili_master_key: String,
let fairing = AdHoc::on_ignite("load app config!", |rocket| async move
let app_config = match rocket.figment().focus("app").extract::<AppConfig>()
Ok(a) => a,
Err(e) =>
panic!("load app config error::?", e);
;
let client = Client::new(app_config.meili_url, Some(app_config.meili_master_key));
rocket.manage(client)
);
rocket::build()
.attach(fairing)
Rust 的 Rocket Web 框架如何使用共享变量?
【中文标题】Rust 的 Rocket Web 框架如何使用共享变量?【英文标题】:How to use shared variables Rust's Rocket web framework? 【发布时间】:2022-01-14 12:06:32 【问题描述】:我正在尝试在路由函数中使用共享资源,例如在我的 hello() 函数中访问变量“shared_resource”
#[launch]
fn rocket() -> _
let shared_resource = SharedResource::new()
rocket::build().mount("/", routes![hello])
#[get("/")]
fn hello() -> &'static str
let _ = shared_resource.some_method()
"Hello, world!"
我如何做到这一点?
【问题讨论】:
【参考方案1】:您可以为此使用rocket::State
。
只要SharedResource
实现Send + Sync + 'static
并在启动时初始化,这将起作用。
示例
#[launch]
fn rocket() -> _
let shared_resource = SharedResource::new()
rocket::build()
.mount("/", routes![hello])
.manage(shared_resource)
#[get("/")]
fn hello(shared_resource: State<SharedResource>) -> &'static str
let _ = shared_resource.some_method()
"Hello, world!"
【讨论】:
以上是关于rust rocket读取自定义配置的主要内容,如果未能解决你的问题,请参考以下文章
Rocket 每晚需要最低版本的 Rust,但已经安装了更高的稳定版本
返回使用 Rocket 和 Diesel (Rust) 在 PostgreSQL 中创建的单个记录
如何设置(Rust)Rocket API 端点的模板响应的 HTTP 状态代码?
TypeError:无法读取未定义的属性“rocket_name”——即使它已定义