Bendi新闻
>
Rust 1.80 的新特性
Rust 1.80 的新特性
4月前
导读:Rust 1.8的新 LazyCell 和 LazyLock 类型可将其数据的初始化延迟到首次访问时。其范围模式也在语言中最新更新,这受到了不少开发者的关注。
序言
当红并流行的内存安全编程语言Rust 1.80 现在已经正式发布,刚刚它具有“惰性”类型,可以延迟数据初始化直到被第一次访问。
根据 21CTO 综合各方之确切消息,Rust 1.80于当时时间 7 月 25 日正式发布:
https://blog.rust-lang.org/2024/07/25/Rust-1.80.0.html
Rust 1.80.0 关键更新?
1)LazyCell 和 LazyLock
LazyCell 与LazyLock新类型将数据初始化延迟到第一次访问。
其中LazyLock是线程安全的,适用于静态值,而LazyCell不是线程安全的,但可以在线程本地静态中使用。
以下是使用LazyLock的代码示例:
use std::sync::LazyLock;
use std::time::Instant;
static LAZY_TIME: LazyLock<Instant> = LazyLock::new(Instant::now);
fn main() {
let start = Instant::now();
std::thread::scope(|s| {
s.spawn(|| {
println!("Thread lazy time is {:?}", LAZY_TIME.duration_since(start));
});
println!("Main lazy time is {:?}", LAZY_TIME.duration_since(start));
});
}
检查 cfg 名称和值
Cargo 1.80 现在已经包括检查 cfg 名称和值,用以捕获拼写错误和错误配置,从而提高条件配置的可靠性。
cfg 的代码检查示例如下:
fn main() {
println!("Hello, world!");
#[cfg(feature = "crayon")]
rayon::join(
|| println!("Hello, Thing One!"),
|| println!("Hello, Thing Two!"),
);
}
它会做如下警告输出:
warning: unexpected `cfg` condition value: `crayon`
--> src/main.rs:4:11
|
4 | #[cfg(feature = "crayon")]
| ^^^^^^^^^^--------
| |
| help: there is an expected value with a similar name: `"rayon"`
|
= note: expected values for `feature` are: `rayon`
= help: consider adding `crayon` as a feature in `Cargo.toml`
模式中的专属范围
Rust 1.8 现在支持独占范围模式(a..b),增强模式匹配并减少对包含端点单独常量的需要。
使用独占范围模式的代码示例:
pub fn size_prefix(n: u32) -> &'static str {
const K: u32 = 10u32.pow(3);
const M: u32 = 10u32.pow(6);
const G: u32 = 10u32.pow(9);
match n {
..K => "",
K..M => "k",
M..G => "M",
G.. => "G",
}
}
更稳定的 API
Rust 1.8 新的稳定 API 包括 Rc 和 Arc 类型的实现,以及Duration、Option、Seek、BinaryHeap、NonNull 等的功能增强。
结语
如何更新到 1.8呢?已通过安装 Rust 旧版本的开发者,可以通过 rustup 的运行更新至最新 1.80 版本。
rustup update stable
作者:万能的大雄
相关阅读:
微信扫码关注该文公众号作者
来源:21CTO
相关新闻
JDK 23:Java 23 的新特性预览Angular 预览新特性,谷歌计划将其与内部的 Wiz 框架合并Apache Kafka 3.8 新特性解读Rust 1.80 提供 Lazy Statics 稳定支持,并支持在模式匹配中使用开区间Spring Boot 3.2 新特性:JdbcClientECMAScript 2024新特性精读《货币和信用理论》100讲:第30讲 间接交换的特性引起的货币购买力变化的特殊原因船新 IDEA 2024.1,新特性真香!Java 22 正式发布,一文了解全部新特性Linux 6.10 将支持 RISC-V 架构下的 Rust 编程语言Nano Lett.: 二维半导体异质结莫尔激子重构和杂化特性的研究从电梯故障到编程新宠,Rust为何连续七年称霸「最受推崇语言」Rust 编写的 Borgo 语言带来了代数数据类型和更多功能VS Code劲敌、Atom原作者主导、Rust编写的“最好”编辑器——Zed开始支持LinuxRust编写的Web开发框架——同时支持Node和PythonRust 编写的 Zed 编辑器开源:约 27 万行代码、主打“高性能”Rust编写的Zed编辑器开源:约27万行代码、主打“高性能”Ruffle 2023回顾——Rust实现的开源Flash Player模拟器争议与热度并存,越来越多开发者正在抛弃他们的旧语言转向 Rust微软组建新团队,帮助用Rust重写核心Windows库大模型时代的操作系统:融合 Rust 和大模型,vivo 打造 AI 操作系统大模型时代的操作系统:融合Rust和大模型,vivo打造AI操作系统用Rust开发跨平台游戏是怎样的体验?比VS Code快得多!用Rust重写,支持OpenAI、Copilot 的Zed编辑器开源了