Rust 1.46 编程语言发布

发表 系统编程语言版本1.46 ,由 Mozilla 项目创建。 该语言专注于内存安全,提供自动内存管理,并提供在不使用垃圾收集器和 运行.

Rust 的自动内存管理消除了操作指针时的错误,并防止低级内存操作引起的问题,例如在释放内存区域后访问它、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。 货物,让您一键获取程序所需的库。 支持存储库来托管库 箱子.

创新:

  • 使用表达式“const fn”定义的函数的功能得到了扩展,它们不仅可以作为常规函数调用,而且可以在任何上下文中代替常量使用。 这些函数是在编译时计算的,而不是在运行时计算的,因此它们受到某些限制,例如只能读取常量的能力。

    新版本取消了在此类函数中使用布尔运算符(“&&”和“||”)的禁令,并允许使用“if”、“if let”、“match”结构,
    “while”、“while let”和“loop”,并且还提供了使用表达式“&[T]”转换为切片(切片、动态数组)的能力。 在“const fn”函数中使用这些功能可以让您将一些资源密集型操作移至编译阶段。 例如,“const-sha1”的实现使得在编译时计算 SHA-1 哈希成为可能,这使得 Rust 的 WinRT 绑定速度提高了近 40 倍。

  • 为了使错误消息提供更多信息,对“#[track_caller]”属性的支持已经稳定,这对于像 unwrap 这样的函数很有用,如果类型使用不正确,可能会导致恐慌。 恐慌处理程序将使用指定的属性在错误消息中打印调用者的位置。
  • std::mem::forget 方法中使用了“const”属性,它决定了在任何上下文中使用它而不是常量的可能性。
  • API 的新部分已移至稳定类别,包括稳定的 Option::zip 和 vec::Drain::as_slice。
  • 在包管理器 Cargo 中 添加 支持编译包时设置的新环境变量:CARGO_BIN_NAME(生成的可执行文件的名称)、CARGO_CRATE_NAME(包名称)、CARGO_PKG_LICENSE(清单中指定的许可证)、CARGO_PKG_LICENSE_FILE(许可证文件的路径)。

来源: opennet.ru

添加评论