Rust 1.73.0 发布
Rust 1.73.0 稳定版已正式发布,主要带来以下变化:
Cleaner panic messages
默认紧急处理程序生成的输出已更改为将 panic 消息放在单独一行,而不是用引号括起来。这可以使 panic 消息更易于阅读,如本示例所示:
fn main() { let file = "ferris.txt"; panic!("oh no! {file:?} not found!"); }
Output before Rust 1.73:
thread 'main' panicked at 'oh no! "ferris.txt" not found!', src/main.rs:3:5
Output starting in Rust 1.73:
thread 'main' panicked at src/main.rs:3:5: oh no! "ferris.txt" not found!
这在信息较长、包含嵌套引号或跨多行时尤其有用。
此外,assert_eq
和assert_ne
产生的 panic 消息也已被修改,移动了自定义消息(第三个参数)并删除了一些不必要的标点符号,如下所示:
fn main() { assert_eq!("🦀", "🐟", "ferris is not a fish"); }
Output before Rust 1.73:
thread 'main' panicked at 'assertion failed: `(left == right)` left: `"🦀"`, right: `"🐟"`: ferris is not a fish', src/main.rs:2:5
Output starting in Rust 1.73:
thread 'main' panicked at src/main.rs:2:5: assertion `left == right` failed: ferris is not a fish left: "🦀" right: "🐟"
Thread local initialization
正如 RFC 3184 中所提议的,LocalKey<Cell<T>>
和LocalKey<RefCell<T>>
现在可以直接使用get()
、set()
、take()
和replace()
方法进行操作,而无需像一般LocalKey
工作那样跳过with(|inner| ...)
闭包。LocalKey<T>
是thread_local!
statics 的类型。
新方法使 common code 更加简洁,并避免了为新线程在thread_local!
中指定的默认值运行额外的初始化代码。
thread_local! { static THINGS: Cell<Vec<i32>> = Cell::new(Vec::new()); } fn f() { // before: THINGS.with(|i| i.set(vec![1, 2, 3])); // now: THINGS.set(vec![1, 2, 3]); // ... // before: let v = THINGS.with(|i| i.take()); // now: let v: Vec<i32> = THINGS.take(); }
Stabilized APIs
- Unsigned
{integer}::div_ceil
- Unsigned
{integer}::next_multiple_of
- Unsigned
{integer}::checked_next_multiple_of
std::ffi::FromBytesUntilNulError
std::os::unix::fs::chown
std::os::unix::fs::fchown
std::os::unix::fs::lchown
LocalKey::<Cell<T>>::get
LocalKey::<Cell<T>>::set
LocalKey::<Cell<T>>::take
LocalKey::<Cell<T>>::replace
LocalKey::<RefCell<T>>::with_borrow
LocalKey::<RefCell<T>>::with_borrow_mut
LocalKey::<RefCell<T>>::set
LocalKey::<RefCell<T>>::take
LocalKey::<RefCell<T>>::replace
这些 API 现在在 const contexts 中是稳定的:
详情可查看官方公告。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【 webshell 文件传输工具 trzsz.js 】发布 v1.1.3
【 webshell 文件传输工具trzsz.js】发布 v1.1.3,使用异步的 fs API,提高了接入的可扩展性。 开发指引 添加依赖 npm install trzsz 或者 yarn add trzsz 在 Node.js 中引用 import { TrzszFilter } from "trzsz"; 或者 const { TrzszFilter } = require("trzsz"); 或者在浏览器中引用 <script src="node_modules/trzsz/lib/trzsz.js"></script> 创建TrzszFilter对象( 每个登录服务器的连接创建一个相应的 ) const trzszFilter = new TrzszFilter({ // 这里设置 trzsz 的属性,详情请参考下文。 }); 一般来说,服务器的输出会转发到终端进行显示,创建TrzszFilter过滤器,接受服务器的输出,并转发给终端。 const trzszFilter = new TrzszFilter...
- 下一篇
JumpServer 会话录像文件未授权访问漏洞
漏洞描述 JumpServer 是一款开源的堡垒机。 在JumpServer受影响版本中,由于会话回放录像接口/api/v1/terminal/sessions/鉴权不当,未授权的攻击者可以通过直接访问/api/v1/terminal/sessions/接口查看并下载会话回放录像数据。 当会话回放存储在S3或OSS或其他云存储中,则不受此漏洞影响。 漏洞名称 JumpServer 会话录像文件未授权访问漏洞 漏洞类型 身份验证不当 发现时间 2023-09-18 漏洞影响广度 广 MPS编号 MPS-ye5k-1v9i CVE编号 CVE-2023-42442 CNVD编号 - 影响范围 JumpServer@[3.0.0, 3.5.5) JumpServer@[3.6.0, 3.6.4) 修复方案 禁止访问/api/v1/terminal/sessions/接口 参考链接 https://www.oscs1024.com/hd/MPS-ye5k-1v9i https://nvd.nist.gov/vuln/detail/CVE-2023-42442 Commit POC 免...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群