返回首页

Rust 1.94.0:新方法和 Cargo 配置 | IT 评测

Rust 1.94.0 发布版包括了对处理固定长度窗口的 array_windows 方法的稳定化、对 Cargo 配置文件中 include 键的支持以及向 TOML 1.1 的过渡。这些变更简化了编写安全且可读代码,以及灵活的项目配置。推荐所有 Rust 开发者更新。

Rust 1.94.0:新功能如何改进您的代码?发布详情
Advertisement 728x90

# Rust 1.94.0:array_windows 稳定化、配置中的 include 以及转向 TOML 1.1

Rust 1.94.0 已发布,为开发者带来了多项重大改进。主要新功能包括用于固定长度数组迭代的 array_windows 方法、在 Cargo 配置文件中支持 include 键,以及切换到 TOML 1.1。这些变化将简化您的工作流程。

array_windows 方法:处理固定长度窗口

在 Rust 新版本中,切片(slice)的 array_windows 方法已正式稳定。它允许使用固定长度窗口迭代切片,无需手动处理索引和边界检查。与返回动态长度切片(&[T])的 windows 方法不同,array_windows 返回固定长度数组的引用(&[T; N])。

这在需要处理已知窗口大小的连续元素时特别实用。例如,要在字符串中查找 ABBA 模式(两个不同字母后跟它们的逆序),可以使用以下代码:

Google AdInline article slot
fn has_abba(s: &str) -> bool {
    s.as_bytes()
        .array_windows()
        .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}

编译器会自动从闭包的解构模式推断窗口长度(4)。如果使用 windows(4),则需要手动检查索引,这既不安全也不易读。

使用 include 键管理 Cargo 配置

Cargo 现在在配置文件(.cargo/config.toml)中支持 include 键。这一功能简化了跨项目和环境的配置组织、共享与管理。

include 键可以是路径数组,或带有额外选项的内联表。例如:

Google AdInline article slot
# 路径数组
include = [
    "frodo.toml",
    "samwise.toml",
]

# 用于微调的内联表
include = [
    { path = "required.toml" },
    { path = "optional.toml", optional = true },
]

optional = true 选项允许指定某些环境(例如开发者的本地机器)中文件可能不存在,从而提升配置灵活性,而无需创建单独的分支。

切换到 TOML 1.1:主要变化

Cargo 现在完全支持清单和配置文件中的 TOML 1.1,带来了多项便利改进:

  • 内联表可以使用尾随逗号跨多行展开。
  • 字符串支持新转义序列:\xHH\e
  • 时间表示中可选的秒部分(默认:0)。

多行内联表示例:

Google AdInline article slot
serde = {
    version = "1.0",
    features = ["derive"],
}

注意:Cargo.toml 中使用 TOML 1.1 新功能,会将最低支持的 Rust 版本(MSRV)提升到需要新 Cargo 解析器的版本。不过,在发布 crate 时,Cargo 会自动将清单重写为与旧解析器兼容的格式,从而为您的 crate 用户保留对早期 Rust 版本的支持。

稳定化的 API:完整列表

1.94.0 版本稳定了许多之前处于开发阶段的 API。以下是主要内容:

  • 切片方法:<[T]>::array_windows<[T]>::element_offset
  • LazyCell 方法:getget_mutforce_mut
  • LazyLock 方法:getget_mutforce_mut
  • 转换:impl TryFrom<char> for usize
  • Peekable 方法:next_if_mapnext_if_map_mut
  • x86(AVX-512 FP16)和 AArch64(NEON FP16)的内部函数(不包括依赖不稳定 f16 类型的函数)
  • 数学常数:f32::consts::EULER_GAMMAf64::consts::EULER_GAMMAf32::consts::GOLDEN_RATIOf64::consts::GOLDEN_RATIO
  • f32::mul_addf64::mul_add 方法现在在 const 上下文中稳定

这些变化扩展了标准库的能力,让代码更具表现力。

开发者要点

  • 简化窗口处理array_windows 方法减少了固定窗口处理的样板代码,提升了安全性和可读性。
  • 配置灵活性:Cargo 中的 include 键支持模块化配置组装,特别适合大型项目和团队。
  • TOML 1.1 兼容:新 TOML 功能让配置文件更便捷,但使用时需注意 Cargo.toml 中的 MSRV。
  • 标准库扩展:稳定新 API(包括数学常数和迭代器方法)简化了日常开发任务。

推荐所有开发者更新到 Rust 1.94.0 以充分利用这些改进。使用命令 rustup update stable 安装。

— Editorial Team

Advertisement 728x90

继续阅读