您现在的位置是:首页 > 新游发布

Rust新版本 1.28发布

星际游娱坊 2025-03-12【新游发布】270人已围观

简介日前Rust核心团队宣布Rust的新版本1.28.0。Rust是一种专注于安全性、速度和并发性的系统编程语言。一键升级如果你通过rustup安装了以前版本的Rust,那么获取就像以下一样简单:rustupupdatestable如果你还没有,可以从我们网站上的相应页面下载Rust,详细安装和问题文档...

日前Rust核心团队宣布Rust的新版本1.28.0。Rust是一种专注于安全性、速度和并发性的系统编程语言。

一键升级

如果你通过rustup安装了以前版本的Rust,那么获取就像以下一样简单:

rustupupdatestable

如果你还没有,可以从我们网站上的相应页面下载Rust,详细安装和问题文档可以查看GitHub(/github:/rust-lang/rust)上Rust仓库相关说明和问题。

1.28.0新特性全局分配器

分配器是Rust中的程序在运行时从系统获取内存的方式。以前,Rust不允许改变获取内存的方式,这限制了其使用的场景。对于内存分配在某些平台上是使用jemalloc,其他平台上则用系统分配器,但用户都无法对此加以控制。在新版本1.28.0中,#[global_allocator]属性已经稳定可以用,它可以允许Rust程序将其分配器设置为系统分配器,以及通过实现GlobalAlloc特性来定义新的分配器。

某些平台上Rust程序的默认分配器是jemalloc。标准库现在提供了系统分配器的句柄,可以通过声明静态并使用#[global_allocator]属性标记它来在需要时切换到系统分配器。

usestd::alloc::System;

#[global_allocator]

staticGLOBAL:System=System;

fnmain(){

letmutv=Vec::new();

//使用系统分配器分配内容

(1);

}

但是,有时你希望为给定的应用程序域定义自定义分配器。通过实施GlobalAlloc特性,这也相对容易。具体信息请浏览官方文档。

改进了格式化的错误消息

继续进行诊断工作,这一次强调格式化:

format!("{_foo}",_foo=6usize);

以前,这种错误触的错误提示相对较差,没有给出具体原因:

现在,我们发出一个诊断信息,告诉你格式字符串无效的具体原因:

有关更多信息,请参阅详细发行说明

类库更稳定

我们已经提到了GlobalAlloc特性的稳定性,但另一个重要的稳定性是NonZero数字类型。以下是标准无符号整数类型的包装:

NonZeroU8,NonZeroU16,NonZeroU32,NonZeroU64,NonZeroU128和NonZeroUsize。

这允许进行大小优化,例如,Optionu8为两个字节,而OptionNonZeroU8只有一个字节大。请注意,即使NonZeroU8包含在另一个结构中,此优化仍然生效;下面的示例说明尽管将Door放在Option中,但它仍然是1字节大。此优化也适用于用户定义的枚举,选项不是特殊的。

usestd::mem;

usestd::num::NonZeroU8;

structKey(NonZeroU8);

structDoor{

key:Key,

}

fnmain(){

assert_eq!(mem::size_of::Door(),1);

assert_eq!(mem::size_of::OptionDoor(),1);

}

还有很多其他库也已稳定,详细信息请浏览官方文档。

Cargo特性

Cargo现在不再允许你使用修改src目录的构建脚本发布包。应该将包中的src目录视为不可变的。

很赞哦!(137)