Rust 1.82.0 来啦!快来看看有哪些新特性

文摘   科技   2024-10-20 00:43   四川  

引言

各位 Rust 爱好者们,好消息!Rust 1.82.0 稳定版已经正式发布了。这个版本带来了许多激动人心的新特性和改进,让我们一起来探索一下吧!

创作背景

作为一名 Rust 编程语言爱好者,我一直密切关注着 Rust 的发展。当看到 Rust 1.82.0 版本发布的消息时,我迫不及待地想要与大家分享这个激动人心的消息。Rust 语言以其安全性、并发性和高性能而闻名,每一次更新都会带来令人期待的新特性。让我们一起来看看这次更新有哪些亮点吧!

主要特性

1. cargo info 子命令

Rust 1.82.0 引入了一个新的 Cargo 子命令 cargo info,它可以显示注册表中包的信息。这个功能满足了长期以来的需求,让开发者可以更方便地查看包的详细信息。

使用示例:

$ cargo info tokio

tokio #io #async #non-blocking #futures
An event-driven, non-blocking I/O platform for writing asynchronous I/O
backed applications.
version: 1.40.0
license: MIT
rust-version: 1.70
documentation: https://docs.rs/tokio/1.40.0
homepage: https://tokio.rs
repository: https://github.com/tokio-rs/tokio
crates.io: https://crates.io/crates/tokio/1.40.0
features:
 +default              = []
  bytes                = [dep:bytes]
  fs                   = []
  full                 = [fs, io-util, io-std, macros, net, parking_lot, process, rt, rt-multi-thread, signal, sync, time]
  io-std               = []
  io-util              = [bytes]
  libc                 = [dep:libc]
  macros               = [tokio-macros]
  mio                  = [dep:mio]
  net                  = [libc, mio/os-poll, mio/os-ext, mio/net, socket2, windows-sys/Win32_Foundation, windows-sys/Win32_Security, windows-sys/Win32_Storage_FileSystem, windows-sys/Win32_System_Pipes, windows-sys/Win32_System_SystemServices]  
  parking_lot          = [dep:parking_lot]
  process              = [bytes, libc, mio/os-poll, mio/os-ext, mio/net, signal-hook-registry, windows-sys/Win32_Foundation, windows-sys/Win32_System_Threading, windows-sys/Win32_System_WindowsProgramming]
  rt                   = []
  rt-multi-thread      = [rt]
  signal               = [libc, mio/os-poll, mio/net, mio/os-ext, signal-hook-registry, windows-sys/Win32_Foundation, windows-sys/Win32_System_Console]
  signal-hook-registry = [dep:signal-hook-registry]
  socket2              = [dep:socket2]
  sync                 = []
  test-util            = [rt, sync, time]
  time                 = []
  tokio-macros         = [dep:tokio-macros]
  tracing              = [dep:tracing]
  windows-sys          = [dep:windows-sys]
note: to see how you depend on tokio, run `cargo tree --invert --package tokio@1.40.0`

此处需要 tokio 已经在 Cargo.lock 文件中,且如果本地是国内的镜像,则需要指定 cargo info tokio --registry crates-io 来运行!

2. Apple 目标平台升级

  • macOS 上的 64 位 ARM 架构(aarch64-apple-darwin)现在是 Tier 1 目标平台,这意味着它获得了最高级别的支持保证。
  • Mac Catalyst 目标平台现在是 Tier 2,可以通过 rustup 轻松下载和使用。

3. 精确捕获语法:use<..>

Rust 现在支持在某些 impl Trait 约束中使用 use<..> 语法来控制捕获哪些泛型生命周期参数。这个新特性可以帮助开发者更精确地控制生命周期参数的捕获,提高代码的灵活性和可读性。

示例:

fn f(x: &()) -> impl Sized + use<'_> { x }
// 这段代码现在可以正常工作

4. 创建原始指针的原生语法

Rust 1.82.0 引入了创建原始指针的原生语法,使得在处理可能悬空、可能未对齐或可能不指向有效数据的指针时更加方便。

新语法示例:

#[repr(packed)]
struct Packed {
    not_aligned_field: i32,
}

fn main() {
    let p = Packed { not_aligned_field: 1_82 };

    // 新的创建指针的方式
    let ptr = &raw const p.not_aligned_field;

    // 注意:直接解引用 ptr 是未定义行为,因为指针未对齐!
    let val = unsafe { ptr.read_unaligned() };
}

5. unsafe extern 块中的安全项

Rust 现在允许在 unsafe extern 块中标记某些项为安全使用。这提高了代码的安全性和可读性,使得开发者可以更清晰地表达外部函数的安全性。

示例:

unsafe extern {
    pub safe static TAU: f64;
    pub safe fn sqrt(x: f64) -> f64;
    pub unsafe fn strlen(p: *const u8) -> usize;
}

升级指南

要升级到 Rust 1.82.0,只需在终端中运行以下命令:

$ rustup update stable

如果你还没有安装 Rust,可以访问 Rust 官网(https://www.rust-lang.org)下载安装 rustup 工具链管理器。

如果是国内的 Windows 用户,可以在 powershell 中设置环境变量,后再升级,可以提升升级速度:

$env:RUSTUP_DIST_SERVER="https://rsproxy.cn"
$env:RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

总结

Rust 1.82.0 带来了许多令人兴奋的新特性和改进,包括 cargo info 子命令、Apple 平台支持升级、精确捕获语法、创建原始指针的原生语法以及 unsafe extern 块中的安全项。这些更新不仅提高了 Rust 的易用性和安全性,也为开发者提供了更多的工具和选择。

无论你是 Rust 新手还是经验丰富的开发者,现在都是开始使用或升级到 Rust 1.82.0 的好时机。让我们一起拥抱 Rust 的新特性,创造更安全、更高效的代码吧!

参考文章

  1. Announcing Rust 1.82.0 | Rust Blog:https://blog.rust-lang.org/2024/10/17/Rust-1.82.0.html
  2. Rust 官方网站:https://www.rust-lang.org

书籍推荐

各位 Rust 爱好者,今天为大家介绍一本《Programming Rust: Fast, Safe Systems Development》(第二版) 是由 Jim Blandy、Jason Orendorff 和 Leonora Tindall 合著的 Rust 编程指南。本书深入探讨了 Rust 语言在系统编程中的应用,着重介绍如何利用 Rust 的独特特性来平衡性能和安全性。书中涵盖了 Rust 的基础数据类型、所有权和借用概念、特征和泛型、并发编程、闭包、迭代器以及异步编程等核心内容。这本更新版基于 Rust 2021 版本,为系统程序员提供了全面而实用的 Rust 编程指导。

  1.  Rust:横扫 C/C++/Go 的性能之王?

  2.  从 Rust 开发者视角看 C++:优缺点大揭秘

  3.  Rust vs Zig:新兴系统编程语言之争

数据科学研习社
带你走进数据科学的世界🚀
 最新文章