Rust 1.36.0 发布,dbg! 宏现在支持多个参数

xplanet
 xplanet
发布于 2019年07月05日
收藏 9

Rust 1.36.0 稳定版发布了。

如果之前已经通过 rustup 安装了 Rust,那么可以通过以下方式获取 Rust 1.36.0:

$ rustup update stable

或者直接从更新页面下载。

此版本的亮点包括:

Future 特性已稳定

有了这种稳定性,官方表示希望提供重要的 crates、库和生态系统时间来准备 async / .await

alloc crates 已稳定

在 1.36.0 之前,标准库由 std、 core和 proc_macro组成。核心包提供了核心功能,如 Iterator 和Copy ,可以在 #![no_std] 环境中使用,因为它没有强加任何要求。同时, std crate 提供类似 Box<T> 和 OS 功能的类型,但需要全局分配器和其他 OS 功能作为回报。

从 Rust 1.36.0 开始,std 的部分依赖于全局分配器,例如 Vec<T>现在可以在 alloc crate 中使用。

MaybeUninit<T> 代替 mem::uninitialized

在 Rust 的早期版本中,mem::uninitialized 函数允许通过假装已在类型 T 初始化值而不执行任何操作来绕过 Rust 的初始化检查。但是mem::uninitialized 基本上无法正确使用,因为 Rust 编译器假定值已正确初始化。

为了解决这种情况,在 Rust 1.36.0 中, MaybeUninit<T> 类型已经稳定

并且,由于 MaybeUninit<T> 是更安全的替代方案,从 Rust 1.38 开始,函数 mem::uninitialized将被弃用。

NLL 向后移植到 Rust 2015

Rust 1.31.0 推出了 NLL(非词汇生命周期),这种语言的改进使借阅检查器变得更加智能且更加用户友好。例如,可以这样写:

fn main() {
    let mut x = 5;
    let y = &x;
    let z = &mut x; // This was not allowed before 1.31.0.
}

在 1.31.0 中,NLL 仅在 Rust 2018 中稳定下来,并承诺会被向后移植到 Rust 2015。Rust 1.36.0 实现了这个承诺,NLL 现在可用于 Rust 2015。

一个新的 HashMap<K, V> 实现

在 Rust 1.36.0 中, HashMap<K, V> 实现已被替换为基于 SwissTable 设计的 hashbrown crate 中的实现。虽然接口是相同的,但 HashMap<K, V> 实现现在平均更快并且具有更低的内存开销。需要注意的是,与 hashbrown crate 不同,std 中的实现仍默认为 SipHash 1-3 散列算法。

Cargo 的离线支持

在 Rust 1.36 中,支持 --offline改变了 Cargo 的依赖性解析算法,仅使用本地缓存的依赖关系。要预先填充本地缓存以准备脱机,请使用 cargo fetch 命令,该命令将下载项目所需的所有依赖项。

库的变更

  •  dbg! 宏现在支持多个参数

新的稳定 API 包括:

  • task::Waker 和 task::Poll
  • VecDeque::rotate_left 和 VecDeque::rotate_right
  • Read::read_vectored 和 Write::write_vectored
  • Iterator::copied
  • BorrowMut<str> for String
  • str::as_mut_ptr

详情可查看发布公告

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Rust 1.36.0 发布,dbg! 宏现在支持多个参数
加载中

精彩评论

j
jmesyan
还是用go爽
KevinBlandy
KevinBlandy
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
doyouhaobaby
doyouhaobaby
好,非常强大,继续学习
Moodys
Moodys
语法再简单些就好了
gowk
gowk
Go is the result of C programmers designing a new programming language, and Rust is the result of C++ programmers designing a new programming language.
Go是C程序员设计新编程语言的结果,而Rust是C ++程序员设计新编程语言的结果

—— https://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-replacement.html

最新评论(15

fuwu360
fuwu360
人生苦短,我用Python 生态第一,我用Java
Feng_Yu
Feng_Yu
rust的优势在于内存安全,在高并发场景下有优势,至于性能高啊什么的其实并不是rust的核心竞争力,因为性能高的语言多了,而且java等成熟的企业开发语言本身也有很多很成熟的高性能的类库
一一无念
一一无念
语法有点压力, 还是go用起来简单
KevinBlandy
KevinBlandy
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java天下第一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
doyouhaobaby
doyouhaobaby
好,非常强大,继续学习
Anjelo
Anjelo
swift、rust、kotlin谁会笑到最后呢
阿飞哥哥
阿飞哥哥
go
d
dwcz
都不行。因为设计基础都是串发模式,未来的语言是基于并发模式的。就像C赢其他语言,依赖的是,灵活的可再造性。这些语言都只是改良,对编程中错误的根本原因--模式不匹配问题,都没有效的解决方案。
gowk
gowk
Go is the result of C programmers designing a new programming language, and Rust is the result of C++ programmers designing a new programming language.
Go是C程序员设计新编程语言的结果,而Rust是C ++程序员设计新编程语言的结果

—— https://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-replacement.html
开源中国-首席村长
开源中国-首席村长
Kotlin是Java程序员设计新编程语言的结果
来自山卡拉的你
来自山卡拉的你
老实说,我也很想学习rust,但是无奈无法太复杂,感觉比C++还要复杂,比我以前学C++还要困难😂,请问有好的教程不?
j
jmesyan
还是用go爽
来自山卡拉的你
来自山卡拉的你
go确实很好用,但是也可以学习一下rust,虽然很难,但是也挺有趣的
lidanger
lidanger
rust 虽然不容易学,但很多新特性还是值得一看的
Moodys
Moodys
语法再简单些就好了
返回顶部
顶部