如何在Rust的稳定版本中使用Rocket

3

我想使用稳定版本的rustc来编译rocket Web应用程序。 rocket模块可以正常编译,但我想使用rocket_contrib中的静态文件服务器。我的Cargo.toml文件如下:

[dependencies]
rocket = "0.5.0-rc.1"

[dependencies.rocket_dyn_templates]
version = "0.1.0-rc.1"
features = ["handlebars"]

[dependencies.rocket_contrib]
version = "0.4.10"
default-features = false
features = ["serve"]

当我尝试运行时,出现以下错误:
Error: Pear requires a 'dev' or 'nightly' version of rustc.
Installed version: 1.52.1 (2021-05-09)
Minimum required:  1.31.0-nightly (2018-10-05)

要了解如何设置稳定版本的Rocket Rust并运行,请点击此处。 - Abhishek Sriram
1个回答

6
从 Rocket 0.5 版本开始,你不需要使用 rocket_contrib 了,因为它已经被拆分成几个特性,并且这些特性要么已经在核心库中,要么已经移动到单独的 crate 中。关于这个更改的详细说明可以参考 此版本 的注释(也可查看 issue 1659)。以下是一些具体细节:

随着稳定 contrib 特性升级到 core,'rocket_contrib' 被完全删除,转而使用两个新 crate。这些 crate 的版本与 Rocket 的核心库版本独立,使得可以升级依赖而无需考虑核心库的版本。

'rocket_dyn_templates' 取代了 'templates' 特性。虽然两者很相似,但有以下变化:

  • 'tera_templates' 特性现已更名为 'tera'
  • 'handlebars_templates' 特性现已更名为 'handlebars'
  • 如果未启用 'tera' 或 'handlebars' 中的任何一个特性,则编译将失败

'rocket_sync_db_pools' 取代了 'database' 特性。除了在 crate 根文档中正确记录 database 属性外,它对替换的特性没有做任何修改。

简而言之,你需要将代码从 rocket_contrib 迁移到其他 crate。关于如何迁移的更好指南可能会在 v0.5 正式发布后提供,但在此之前,你可以在 核心库文档和相应 Cargo 特性列表 中查找以前在 rocket_contrib 中可用的特性。

1
正如 https://github.com/SergioBenitez/Rocket/blob/v0.5-rc/CHANGELOG.md#contrib-graduation 中所述,rocket_contribserve 组件现在已经由 https://api.rocket.rs/v0.5-rc/rocket/fs/struct.FileServer.html 在 rocket 中实现。 - Jonathan Giddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接