Rust 的自动内存管理使开发人员免于指针操作,并防止低级内存操作引起的问题,例如释放后内存访问、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。
主
- Cargo 包管理器添加了工具来处理可与 crates.io 公共注册表共存的替代包注册表。 例如,专有应用程序的开发人员现在可以使用自己的私有注册表(在 Cargo.toml 中列出依赖项时可以使用该注册表),并为其产品应用类似于 crates.io 的版本控制模型,以及将依赖项引用到两个 crate。 io 并保存到您自己的注册表中。
将外部注册表添加到 .cargo/config (位于 $HOME 或包目录中)
为...提供 “[registries]”部分,并且要使用外部注册表,“registry”选项出现在 Cargo.toml 中每个依赖项的描述中。 要连接到其他注册表,只需将身份验证令牌放入 ~/.cargo/credentials 文件中并运行命令
“cargo login --registry=my-registry”并发布包 -
“货物发布-registry=my-registry”; - 添加了对使用“?”运算符的完全支持。 在测试中
文档测试 ,允许您使用文档中的示例代码作为测试。 以前的操作员
“?” 仅当存在“fn main()”函数或“#[test]”函数时,才可用于处理测试执行期间的错误; - 在使用过程宏定义的自定义属性中
提供 使用任意标记集的能力(“#[attr($tokens)]”、“#[attr[$tokens]] 和 #[attr{$tokens}]”)。 以前,元素只能使用字符串文字以树/递归形式指定,例如“#[foo(bar, baz(quux, foo = “bar”))]”,但现在可以使用枚举 (' #[range(0. .10)]') 和类似“#[bound(T: MyTrait)]”的结构; - 稳定类型(性状)
尝试从 и尝试 ,允许进行类型转换并进行错误处理。 例如,像 from_be_bytes 这样的整数类型的方法使用数组作为输入,但数据通常是 Slice 类型,并且手动在数组和切片之间进行转换是有问题的。 借助新特征,可以通过调用 .try_into() 即时执行指定操作,例如“let num = u32::from_be_bytes(slice.try_into()?)”。 对于始终成功的转换(例如,从类型 u8 到 u32),添加了错误类型无过失 ,允许透明使用
TryFrom 用于“From”的所有现有实现; - 函数已被弃用
CommandExt::before_exec ,它允许在运行 exec 之前执行处理程序,该处理程序在 fork() 调用后分叉的子进程的上下文中执行。 在这种情况下,父进程的某些资源(例如文件描述符和映射的内存区域)可能会重复,这可能会导致未定义的行为和库的错误操作。
建议使用不安全函数代替before_execCommandExt::pre_exec . - 稳定的有符号和无符号原子整数类型,大小范围为 8 到 64 位(例如,
原子U8 ),以及有符号类型非零 [8|16|32|64|128]. - API 的新部分已移至稳定类别,包括 Any::type_id、Error::type_id、slice::sort_by_cached_key、str::escape_*、str::split_ascii_whitespace、Instant::checked_[add|sub ] 和 SystemTime 方法已稳定::checked_[add|sub]。 iter::from_fn 和 iter::successors 函数已经稳定;
- 对于所有整数类型,实现了checked_pow、saturating_pow、wrapping_pow和overflowing_pow方法;
- 添加了通过指定“-C linker-plugin-lto”构建选项在链接阶段启用优化的功能。
来源: opennet.ru