Rust 的 Rocket Web 框架如何使用共享变量?

     2023-03-21     39

关键词:

【中文标题】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 API 端点的模板响应的 HTTP 状态代码?

】如何设置(Rust)RocketAPI端点的模板响应的HTTP状态代码?【英文标题】:HowcanIsettheHTTPstatuscodeofa(Rust)RocketAPIendpoint\'sTemplateresponse?【发布时间】:2020-07-0912:22:45【问题描述】:我的RocketAPI中有以下登录POST端点处理程序:#[post("/lo... 查看详情

使用 heroku-buildpack-rust 构建 Rocket 应用程序时出现链接错误

】使用heroku-buildpack-rust构建Rocket应用程序时出现链接错误【英文标题】:Linkingerrorwhenusingheroku-buildpack-rusttobuildRocketapp【发布时间】:2021-04-1001:01:21【问题描述】:我已经使用Rocket、Diesel和SQLite构建了一个API。它在本地运行良好... 查看详情

Rust - 无法从 Rocket State 访问 r2d2 池连接

】Rust-无法从RocketState访问r2d2池连接【英文标题】:Rust-CannotAccessr2d2poolconnectionfromRocketState【发布时间】:2021-10-3108:06:16【问题描述】:我目前正在学习Rust和Rocket使用Rust1.54.0+Rocket0.5.0_rc1+Diesel1.4.7+r2d20.8.9我用r2d2创建了一个DBPostgre... 查看详情

Rocket 每晚需要最低版本的 Rust,但已经安装了更高的稳定版本

】Rocket每晚需要最低版本的Rust,但已经安装了更高的稳定版本【英文标题】:RocketrequiresaminimumversionofRustnightly,butahigherstableversionisalreadyinstalled【发布时间】:2019-08-0909:12:57【问题描述】:我正在尝试运行Rocket,但我遇到了第一... 查看详情

2023年rust发展如何?

...Web开发:Rust也在Web开发领域取得了巨大的成功。许多Web框架和库都使用 查看详情

如何使用 web_sys 从 Rust 创建一个 JS 字符串数组?

】如何使用web_sys从Rust创建一个JS字符串数组?【英文标题】:HowtocreateaJSarrayofStringsfromRustusingweb_sys?【发布时间】:2020-08-2221:30:15【问题描述】:我正在尝试使用一个WebAPI,它包含一个从Rust接受字符串数组的方法。我正在使用web... 查看详情

如何使用带有 Rocket 的 abonander/multipart 解析多部分表单?

】如何使用带有Rocket的abonander/multipart解析多部分表单?【英文标题】:Howtoparsemultipartformsusingabonander/multipartwithRocket?【发布时间】:2017-09-1112:10:16【问题描述】:Thismightbeusefulforme:我不知道您打算如何解析多部分表单除了使用原... 查看详情

如何在生产中使用 Rocket 运行 Diesel 迁移?

】如何在生产中使用Rocket运行Diesel迁移?【英文标题】:HowtorunDieselmigrationwithRocketinproduction?【发布时间】:2020-07-1717:11:58【问题描述】:我需要在生产环境中为基于Rocket的应用程序运行Diesel数据库迁移。通常有几种方法可以为... 查看详情

如何使用 Wasm 和 Rust 服务多个 HTML 页面?

】如何使用Wasm和Rust服务多个HTML页面?【英文标题】:HowtoservemultipleHTMLpagesusingWasmwithRust?【发布时间】:2020-07-1001:43:17【问题描述】:我正在尝试构建一个在客户端运行wasm的Web应用程序,我想知道什么是服务多个页面的好方法... 查看详情

使用 r2d2 在 rust/diesel 应用程序中实现连接池

...】:2021-10-0812:16:56【问题描述】:我正在尝试在rust/diesel/rocket应用程序中实现连接池。不知道如何保证establish_pooled_connection()方法的内容只被调用一次,从而准备连接池。这是我的代码。来 查看详情

如何使用 Wasm-Bindgen Web_sys Wasm-pack 将字符串从 Js 传递到通过 Rust 生成的 Wasm

】如何使用Wasm-BindgenWeb_sysWasm-pack将字符串从Js传递到通过Rust生成的Wasm【英文标题】:HowtoPassaStringfromJstoWasmgeneratedthroughRustusingWasm-BindgenWeb_sysWasm-pack【发布时间】:2020-09-1104:16:01【问题描述】:代码是基本的,我从js调用一个函... 查看详情

如何使用 Rocket Lake 通过 perf 访问 RAPL?

】如何使用RocketLake通过perf访问RAPL?【英文标题】:howtoaccessRAPLviaperfwithRocketLake?【发布时间】:2021-04-0715:33:15【问题描述】:我有一个RocketLakeCPU(11900K),但是perf还不支持访问电源事件,我该怎么做?性能事件列表:pastebin.com+tcs... 查看详情

带有 Rocket 和 Diesel 的多租户 Web 应用程序

】带有Rocket和Diesel的多租户Web应用程序【英文标题】:Multi-tenantwebappwithRocketandDiesel【发布时间】:2020-12-0312:25:54【问题描述】:我有一个多租户网络应用程序,可能需要支持数十个租户(公司)。我一直在寻找一种方法来确保... 查看详情

如何使 Rust Game of Life WebAssembly 作为静态网站运行?

】如何使RustGameofLifeWebAssembly作为静态网站运行?【英文标题】:HowtomaketheRustGameofLifeWebAssemblyworkasastaticwebsite?【发布时间】:2020-12-0221:44:12【问题描述】:我已经阅读了RustGameofLife的教程,并且在Web浏览器中有一个可以运行的游... 查看详情

如何使用 .net 框架 2.0 在 Web 服务中使用 Web api

】如何使用.net框架2.0在Web服务中使用Webapi【英文标题】:Howtoconsumeawebapiinwebserviceusing.netframework2.0【发布时间】:2016-06-2807:27:15【问题描述】:我需要使用一个使用java开发的webapi服务。连接到api时出现“无法检索\'\'的资源”的... 查看详情

Rocket CORS 如何使用 Request Guard 返回字符串?

】RocketCORS如何使用RequestGuard返回字符串?【英文标题】:RocketCORShowtoreturnstringwithRequestGuard?【发布时间】:2021-09-1211:29:43【问题描述】:我有一个火箭(0.5.0-rc.1)路线,它返回一个content::Json&lt;String&gt;,我想使用rocket_cors(... 查看详情

PSP(Rocket Software 产品)如何提高 Mainframe 作业的性能

】PSP(RocketSoftware产品)如何提高Mainframe作业的性能【英文标题】:HowdoesPSP(RocketSoftwareproduct)improvesperformanceofMainframejob【发布时间】:2019-05-2719:29:26【问题描述】:PerformanceEssential(PSP,RocketSoftware产品)减少了CPU时间和COBOL程序... 查看详情

如何使用适用于 DynamoDb 的 AWS Rust 开发工具包编写惯用的 Rust 错误处理?

】如何使用适用于DynamoDb的AWSRust开发工具包编写惯用的Rust错误处理?【英文标题】:HowtowriteidiomaticRusterrorhandlingusingAWSRustSDKforDynamoDb?【发布时间】:2021-10-1018:35:35【问题描述】:我是Rust新手,具有Java、Groovy和C方面的背景。在... 查看详情