Rust 1.70.0 正式发布
Rust 团队日前发布了 Rust 的新版本 —— 1.70.0,新版本中值得关注的变化包括:
Crates.io 默认启用稀疏索引
Cargo 的 "sparse" 协议现在默认启用,用于从 crates.io 读取索引。这个功能之前已经在 Rust 1.68.0 中稳定下来,但仍然需要配置才能在 crates.io 中使用。原计划是在 1.70.0 中默认启用该功能的,但直到现在才真正实现。
当你从 crates.io 的索引中获取信息时,你应该看到性能的大幅提高。如果因为某些原因,你需要保持以前的默认状态,即使用 GitHub 托管的 git 索引,可以使用registries.crates-io.protocol
配置设置来改变默认状态。
需要注意的是,改变访问方式的一个副作用是,这也改变了 crate cache 的路径,所以依赖将被重新下载。
OnceCell 和 OnceLock
OnceCell
和它的线程安全对应类型 OnceLock
两个新的类型已经稳定下来,用于共享数据的一次性初始化。这两种类型可以用在任何不希望立即构建的地方。
use std::sync::OnceLock; static WINNER: OnceLock<&str> = OnceLock::new(); fn main() { let winner = std::thread::scope(|s| { s.spawn(|| WINNER.set("thread")); std::thread::yield_now(); // give them a chance... WINNER.get_or_init(|| "main") }); println!("{winner} wins!"); }
诸如lazy_static
和once_cell
等 crate 在过去填补了这一需求,但现在这些构建块是标准库的一部分,由once_cell
的unsync
和sync
模块移植过来。未来还有更多的方法可能会被稳定化,还有配套 LazyCell
和 LazyLock
存储其初始化函数的类型。
IsTerminal
这个新稳定的特性 is_terminal
,用来确定一个给定的文件 descriptor(描述符)或 handle(句柄)是否代表一个终端或 TTY。一个常见的用例是让程序区分运行在脚本模式还是交互模式下,比如在交互式模式下呈现颜色或者是完整的 TUI。
use std::io::{stdout, IsTerminal}; fn main() { let use_color = stdout().is_terminal(); // if so, add color codes to program output... }
调试信息的命名级别
-Cdebuginfo
编译器选项以前只支持数字 0...=2 来增加调试信息量,Cargo 在开发和测试配置文件中默认为2,在发布和工作台配置文件中默认为 0。这些调试级别现在可以通过名称来设置:"none"(0)、"limited"(1)和 "full"(2),以及两个新的级别:"line-directives-only"和 "line-tables-only"。
注意,这些命名的选项还不能通过Cargo.toml
使用,在下一个 1.71 版本中会有这方面的支持。
test CLI 选项
当 #[test]
函数被编译时,可执行文件从 test
crate 获得一个命令行接口。这个 CLI 有很多选项,包括一些尚未稳定的选项,需要指定-Zunstable-options
,就像 Rust 工具链中的许多其他命令一样。然而,虽然这只是在 nightly 构建中被允许的,但这个限制在test
中并不适用。不过,从 1.70.0 开始,Rust 的稳定版和测试版将不再允许不稳定的test
选项。
在一些已知的情况下,不稳定的选项可能在用户不知情的情况下被使用,特别是 IntelliJ Rust 和其他 IDE 插件中使用的--format json
。
更多详情可查看:https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Brave v1.52 发布,支持垂直标签、从图像中复制文本
Brave 是基于 Chromium 的一款免费开源网络浏览器,主打隐私保护,其默认设置就会自动阻止在线广告和网站跟踪。Brave Software(Brave 浏览器所属公司)于 2015 年由 Brendan Eich和 Brian Bondy 联合创立,其中前者是 JavaScript 的创造者,同时也是 Mozilla 联合创始人。 常规 将 Chromium 升级到 114.0.5735.90 增加了垂直标签功能 增加了 "localhost 资源" 权限提示 在 Windows 的图像上下文菜单中增加了 "从图像中复制文本" 功能 在下载气泡上下文菜单中增加了 "从列表中删除" 菜单项 在下载气泡中增加了一个警告图标,以显示不安全的下载正在进行 为 P3A 增加了 Constellation/STAR 加密功能 重新添加了在 brave://settings/content/all 下查看和管理每个网站存储的单个 cookies 的功能 修正了 "HTTPS Everywhere" 在默认启用了 HTTPS 的情况下没有被禁用的问题,这在某些情况下会导致 "Don’t up...
- 下一篇
CatchAdmin v3.1.5 发布,小版本更新优化
介绍 CatchAdmin是一款基于Laravel和Element Plus二次开发而成后台管理系统。Laravel社区也有许多非常优秀的后台管理系统,例如Nova, 官方出品,当然是收费的,免费的有基于Livewire的Filament,还有不得不说的Laravel Admin。CatchAdmin还是采用传统的前后端分离策略,Laravel框架仅仅作为Api输出。将管理系统模块之间的耦合降到了最低限度。每个模块之间都有独立的控制器,路由,模型,数据表。在开发上尽可能将模块之间的影响降到最低,降低了开发上的难度。基于CatchAdmin可以开发CMS,CRM,OA等 等系统。也封装了很多实用的工具,提升开发体验。 V3.1.5 日志 菜单栏支持外链模式 修复用户更新密码错误 优化去除代码中的 alert 无用代码 修复多角色时,权限重复 调整核心包的 withSearch trait 优化后台界面 等等其他.... 视频 catchadmin 模块创建 catchadmin 之快速开发 功能 用户管理 后台用户管理 部门管理 配置公司的部门结构,支持树形结构 岗位管理 配置后台用户...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块