Rust 1.74.0 稳定版已正式发布,主要带来以下变化:
正如RFC 3389所提议,Cargo.tomlmanifest现在支持一个[lints]表来配置来自编译器和其他工具的 lints 的报告级别(禁止、拒绝、警告、允许)。因此,不要使用-F/-D/-W/-A设置 RUSTFLAGS(这会影响整个构建过程),或者使用 crate-level 的属性,例如:
现在可以将这些写入 package manifest中以供 Cargo 处理:
这些也可以在[workspace.lints]表中配置,然后像许多其他工作区设置一样由[lints] workspace = true继承。在决定哪些crates需要重建时,Cargo 还将跟踪这些设置的更改。
有关详细信息,可参阅 Cargo 参考手册中的lints和workspace.lints部分。
此版本中还包含两个相关的 Cargo 功能:credential providers 和 authenticated private registries。
Credential providers允许配置 Cargo 如何获取注册表的凭证。Built-in providers用于 Linux、macOS 和 Windows 上特定于操作系统的安全秘密存储。此外,可以编写自定义 providers 来支持存储或生成令牌的任意方法。使用安全的 credential provider可以降低注册表令牌泄漏的风险。
Registries 现在可以选择要求对所有操作进行身份验证,而不仅仅是发布。这使得 private Cargo registries 能够提供更安全的 crates 托管。使用 private registries需要配置 credential provider。
有关更多信息,可参阅Cargo 文档。
有关返回“return type cannot contain a projection or Self that references lifetimes from a parent scope”错误信息的问题现在已经解决。编译器现在允许在 opaque return types 中提及Self和关联类型,例如async fn和-> impl Trait。即使你对"projection"之类的术语一无所知,这种功能也能让 Rust 更接近你所期望的工作方式。
不过该功能目前有一个不稳定的 feature gate,因为它的实现最初没有正确处理 captured lifetimes。有关更多技术细节,可参阅stabilization pull request。示例:
这些 API 现在在 const contexts 中是稳定的:
查看Rust、Cargo和Clippy中发生的所有变化。
详情可查看官方公告。
未经允许不得转载:岩猫星空网 » Rust 1.74.0 发布