Rust 的自动内存管理使开发人员免于指针操作,并防止低级内存操作引起的问题,例如释放后内存访问、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。
主
-
添加者 支持匹配切片部分的模板(动态数组、切片)。 以前,允许精确匹配,但现在可以使用标记为“..”的结构来覆盖数组的其余元素。 例如:fn foo(单词: &[&str]) {
匹配单词{// 检查数组的起始元素并忽略
跟随它们的元素
[“你好”,“世界”,“!”,..] => println!(“你好世界!”),// 检查前两个元素“Foo”和“Bar”,其余的不重要
["Foo", "Bar", ..] => println!("Baz"),// 忽略所有内容,但最后一个元素必须是“!”。
[.., “!”] => println!(“!!!”),// 在开始切片中,我们包含除最后一个元素之外的所有内容,该元素应该是“z”
[start @ .., "z"] => println!("开头为:{:?}", start),// 在最后一个切片中,我们放置除第一个元素之外的所有内容,第一个元素应该是“a”。
["a", end @ ..] => println!("以:{:?} 结尾", end),休息 => println!("{:?}", 休息),
}
} - 添加了一个新的宏“matches!”,它将表达式和模式作为输入,如果模式与表达式匹配,则返回“true”。 模板可以使用“|”操作而如果”。
匹配 self.partial_cmp(其他) {
一些(更少)=> true,
_ => 假,
}匹配!(self.partial_cmp(其他),一些(更少))
让 foo = 'f';
断言!(匹配!(foo, 'A'..='Z' | 'a'..='z'));让酒吧=一些(4);
断言!(匹配!(条,Some(x)如果x> 2)); - 使用不正确时显示紧急消息
类型 Option 和 Result,现在显示行号,其中包含指向进行有问题的调用的代码的链接,而不是指向在 libcore 中实现调用的代码的链接。 例如,此更改会影响对 Option::None 的 unwrap 和 Expect 的调用,或者在 Result 类型上使用 unwrap_err、expect、expect_err 和类似方法时崩溃。 - Cargo 包管理器提供了将“proc_macro crate”自动替换为带有过程宏的包的“extern”块的功能。 此更改允许将“use”指令应用于过程宏,而无需在代码中指定“extern crate proc_macro;”。 例如,如果程序使用“use proc_macro::TokenStream;”行,那么如果从中删除“extern crate proc_macro;”,代码现在将继续工作。
- 标准库的功能得到了扩展。 在 iter:: 空
添加 发送和同步支持任何 T 值。
调用 Pin::{map_unchecked, map_unchecked_mut}发表 不必为“Sized”实现返回类型值。
在 io:: 光标中实施的 偏方程和方程。 “const”属性决定了在任何上下文中代替常量使用的可能性,应用 对于 Layout::new 方法。 - API 的新部分已转移到稳定类别,包括稳定的 CondVar::wait_while、CondVar::wait_timeout_while、
调试映射::键、调试映射::值、
手动Drop::take,
ptr::slice_from_raw_parts_mut 和 ptr::slice_from_raw_parts。 - Error::description 方法已被弃用。
- 为armv7a-none-eabi和riscv64gc-unknown-linux-gnu平台提供二级支持。 已提供对 riscv64gc-unknown-linux-gnu 平台标准库的支持。
苹果 32 位平台降级 高达第三级支持,这意味着基本支持,但没有自动化测试和官方版本的发布。 支持降级是由于 Apple 不再支持 32 位平台。
来源: opennet.ru