• Rust 1.79.0发布


    Rust 1.79.0发布 ,此版本中的一些主要新功能和改进:

    内联 const 表达式
    内联表达式(例如块)现在在表达式位置上是稳定的,允许显式输入 const 上下文而无需额外声明。这使得涉及常量的代码更加简洁和可读,尤其是在通用上下文中。

    以前:

    const EMPTY: Option = None;
    let foo = [EMPTY; 100];

    现在:

    let foo = [const { None }; 100];

    值得注意的是,这对于通用上下文也是如此,以前需要使用关联常量的详细特征声明:

    fn create_none_arrayconst N: usize>() -> [Option ; N] {
    [ const { None:: }; N]
    }

    这使得代码更加简洁,更易于阅读。

    关联类型位置的Bound
    Rust 1.79 稳定了在其他特征bound边界内直接指定关联类型边界bound的能力:
    T: Trait

    例如。这样就避免了仅仅为了约束关联类型而需要额外的泛型类型

    这一功能允许在一些地方指定界限,而在以前,这些地方要么是不可能的,要么是对使用施加了额外的、不必要的限制:

    where 子句
    在这个位置上,相当于将边界分成两个(或多个)where 子句。
    例如,

    where T:Trait

    相当于

    where T:Trait, ::Assoc: Bound

    Supertraits 
    与 where 子句不同,在使用trait 时,通过新语法指定的约束是隐含的。

    语法示例:

    trait CopyIterator: Iterator {}.

    关联类型项边界(Associated type item bounds)
    这允许对与 trait 关联类型相关联的嵌套刚性投影进行约束,例如

    trait Trait { type Assoc: Trait2; }

    不透明类型边界(RPIT、TAIT)
    可以约束与不透明类型相关联的关联类型,而无需命名不透明类型。例如, impl Iterator 定义了一个迭代器,它的项是 Copy,而无需实际命名该项绑定。

    延长自动临时寿命延长
    在构造中被立即引用的暂时项现在会在match 和 if 构造中自动进行生命周期扩展。这与块构造中暂时项的生命周期扩展行为相同。

    if 构造

    let a = if true {
    ..;
    &temp() // used to error, but now gets lifetime extended} else {
    ..;
    &temp() // used to error, but now gets lifetime extended
    };

    match构造

    let a = match () {
    _ => {
    ..;
    &temp() // used to error, but now gets lifetime extended }
    };

    现在

    let a = {
    ..;
    &temp() // lifetime is extended
    };

    这种行为是向后兼容的,因为以前这些程序会出现编译失败。

    为标准库启用框架指针
    标准库现在默认编译时启用了框架指针,从而可以更轻松地分析使用它的程序。

    Rust 项目发布的标准库现在在编译时使用了 -Cforce-frame-pointers=yes,这样下游用户就能更轻松地配置自己的程序。需要注意的是,标准库还会继续提供行级调试信息(如 DWARF),不过 Cargo 发布的配置文件默认会删除这些信息。

  • 相关阅读:
    深度学习(part5)--深度学习框架Keras
    IE浏览器设置兼容性、清除缓存,重置浏览器、Edge浏览器设置兼容性
    C/C++中的STL
    http模块中----------res响应对象 与服务器相关的数据和属性
    【微信小程序】获取用户手机号的实现
    剑指offer 08. 用两个栈实现队列
    位运算 离散化 区间和算法
    算法通过村第十二关青铜挑战——不简单的字符串转换问题
    负号重载C++
    人工智能、深度学习、机器学习常见面试题141~160
  • 原文地址:https://blog.csdn.net/cfy_banq/article/details/139746698