Rust 1.80.0稳定版发布
创始人
2024-07-31 09:01:40
0

Rust 1.80.0 稳定版现已发布,主要带来以下变化:

LazyCell和LazyLock

新的 “lazy” 类型将值的初始化延迟到首次访问,它们类似于1.70 中稳定的OnceCellOnceLock类型,但单元格中包含了初始化函数。

这完成了从流行的和板条箱中采用到标准库中的功能的稳定化。完成了从lazy_staticonce_cellcrates到标准库中所采用功能的稳定化。

LazyLock 是线程安全选项,适用于staticvalues等地方。

usestd::sync::LazyLock;

usestd::time::Instant;

staticLAZY_TIME: LazyLock = LazyLock::new(Instant::now);

fnmain{

letstart = 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));

});

}

LazyCell 缺乏线程同步,因此没有实现static所需的 Sync,但仍可用于thread_local!statics

Rust 团队表示,根据线程安全的需要,这两种类型也可用于其他数据结构,因此 lazy initialization 在任何地方都可用。

Checkedcfgnames and values

在 1.79 中,rustc稳定了一个--check-cfgflag,现在 Cargo 1.80 正在对其知道的所有cfg名称和值启用这些检查(除了来自rustc的众所周知的名称和值)。包括来自Cargo.toml的功能名称以及来自构建脚本的新cargo::rustc-check-cfgoutput。

unexpected_cfgs会被 warning-by-default unexpected_cfgs lint 报告,用于捕获拼写错误或其他错误配置。

例如,在具有可选rayon依赖项的项目中,此代码配置了错误的feature值:

fnmain{

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 isa expected valuewitha similar name: `"rayon"`

|

= note: expected valuesfor`feature`are: `rayon`

= help: consideradding `crayon`asa feature in`Cargo.toml`

= note: see check-cfg/cargo-specifics.html> formore information about checking conditional configuration

= note: `#[warn(unexpected_cfgs)]`onbydefault

无论实际的rayon功能是否启用,都会报告相同的警告。

还可以使用Cargo.toml清单中的[lints]表来扩展自定义cfg的已知名称和值列表。rustc会自动提供警告中使用的语法。

[lints.rust]

unexpected_cfgs= { level = "warn", check-cfg = ['cfg(foo, values("bar"))'] }

Exclusive ranges in patterns

Rust ranged 模式现在可以使用 exclusive endpoints,写成a..b..b,类似于RangeRangeTo表达式类型。

例如,以下模式现在可以在一个模式的终点和下一个模式的起点使用相同的常量:

pubfnsize_prefix(n: u32) -> &'staticstr{

constK: u32= 10u32.pow(3);

constM: u32= 10u32.pow(6);

constG: u32= 10u32.pow(9);

matchn {

..K => "",

K..M => "k",

M..G => "M",

G.. => "G",

}

}

Exclusive ranges一直以来作为一个不稳定的功能提供。

Rust 团队表示,阻碍因素在于它们可能会增加混乱并增加模式中出现 off-by-one errors 的可能性。

在 Rust 1.80 中,exhaustiveness checking 得到了增强,可以更好地检测模式匹配中的差距,新的

lintnon_contiguous_range_endpointsoverlapping_range_endpoints将有助于检测在哪些情况下需要将 exclusive 模式切换为 inclusive 模式,反之亦然。

Rust 1.80 还稳定了许多 API,详情可查看官方公告。

对了,为什么 Rust 会被称作编程语言界的“原神”?

Reference

https://blog.rust-lang.org/2024/07/25/Rust-1.80.0.html

https://blog.rust-lang.org/2024/05/06/check-cfg.html

相关内容

热门资讯

世界足球(好玩的)分析24小... 微【mz120590】 【mj120590】【mj191717】广东一元一分红中麻将推倒胡等麻将群,...
通知谁有上下分一元一分麻将群... 1.进群方式《mz120590》或者《mj120590》《mj191717》--QQ(4434063...
秘闻24小时正规一元一分麻将... 群主微【mz120590】【mj191717】 【mj120590】亲友团上下分模式,24小时全天不...
盘点那些一元一分红中麻将麻将... 薇新【mz120590】【mj120590】【mj191717】,最火热的跑得快,红中等等。自助上下...
(盘点一下)上哪找绿色1元1... 群主微【mz120590】【mj191717】 【mj120590】亲友团上下分模式,24小时全天不...
重点谁有绿色一块一分麻将跑得... 群主微【mz120590】【mj191717】 【mj120590】亲友团上下分模式,24小时全天不...
给大家知晓一下手机24小时一... 认证群主微信微【mz120590】 【mj120590】【mj191717】(一元俩元红中麻将)(跑...
(旗开得胜)广东红中麻将跑得... 微【mz120590】 【mj120590】【mj191717】(广东一元一分红中癞子爆炸码麻将群)...
(综合分析)跑得快红中麻将群... 一元一分麻将群加群主微【mz120590】【mj191717】 【mj120590】等风也等你。喜欢...
「内幕消息」哪有一块一分红中... 1.进群方式-[mz120590]或者《mj120590》【mj191717】--QQ(QQ4434...
(还原经典)红中麻将跑得快一... 加V【mz120590】【mj191717】【mj120590】红中癞子、跑得快,等等,加不上微信就...
详细介绍红中麻将跑得快群已全... 群主微信:【mz120590】 【mj120590】【mj191717】没有三缺一的无奈,手机上的麻...
【揭秘】24小时上下红中麻将... 1.进群方式《mz120590》或者《mj120590》《mj191717》--QQ(4434063...
盘点十款麻将群一元一分24小... 微【mz120590】【mj191717】 【mj120590】红中麻将群、跑得快群。群内稳定五百人...
(我来教大家)麻将群一元一分... 微【mz120590】 【mj120590】【mj191717】专业麻将群三年房费全网最低,APP苹...
(晴空万里)一元一分红中麻将... 微信一元麻将群群主微【mz120590】 【mj191717】【mj120590】一元一分群内结算,...
「重大通报」真人麻将一元一分... 一元一分麻将群加群主微【mz120590】【mj191717】 【mj120590】等风也等你。喜欢...
(我来教大家)一元一分红中麻... 一元一分麻将群加群主微【mz120590】【mj191717】 【mj120590】等风也等你。喜欢...
年年有余一元一分广东红中麻将... 微【mz120590】 【mj120590】【mj191717】(广东一元一分红中癞子爆炸码麻将群)...
通知24小时上下分1元1分麻... 微【mz120590】 【mj120590】【mj191717】专业麻将群三年房费全网最低,APP苹...