CSDN年仅 5 岁的 Rust 如何成为最受欢迎的编程语言?( 二 )


1.17 - Rustbuild:这是我们的贡献者为Rust做出的最大改进之一 , 将最初基于make的构建系统改成了使用cargo 。 从那以后 , rust - lang/rust降低了新成员构建的门槛以及为项目做贡献的难度 。
1.20 - 关联常量:以前 , 常量只能关联到模块上 。 从1.20开始 , 我们开始稳定地支持将常量关联至结构体、枚举 , 最重要的是还能关联到trait上 。 从那以后 , 我们可以很轻松地给API的类型增加丰富的预设值 , 比如常见的IP地址 , 或关心的数字等 。
2018年
1.24 - 增量式编译:在1.24之前 , 修改代码库后 , rustc会编译全部代码 。 现在rustc变得非常聪明 , 会尽可能使用缓存来生成需要的东西 。
1.26 - impl Trait:新增的impl Trait支持含义丰富的动态API , 还能提供静态分发的好处和性能 。
1.28 - 全局分配器:之前你只能使用rust提供的分配器 。 有了全局分配器API , 现在你可以使用自定义的分配器来实现自己的需求 。 这是实现alloc库的重要一步 , alloc库是标注库的另一个子集 , 它仅包含需要分配器的部分 , 如Vec或String 。 现在我们可以更方便地在多种系统上使用更多标准库了 。
1.31 - 2018版:2018版的发布是自1.0以来最大的一次版本发布 , 其中增加了许多语法的变化与改进 , 同时完全维持了Rust的向后兼容 , 可以让各种不同版本的库无缝协同工作 。

  • 非词法生命周期:这是对Rust borrow checker的一个巨大改进 , 可以接受更多可验证的安全代码 。
  • 模块系统改进:针对模块的定义和使用方式进行的巨大UX改进 。
  • 常量函数:常量函数可以在编译时运行和计算Rust代码 。
  • Rustfmt 1.0:专门为Rust打造的专用代码格式化工具 。
  • Clippy 1.0:用于捕捉常见错误的Rust linter 。 Clippy可以很轻松地确保代码的安全性和正确性 。
  • Rustfix:由于有许多语法改变 , 我们希望提供一个工具 , 可以很容易地进行代码转换 。 有了这个工具 , 只需要执行cargo fix就可以解决语法改动的问题 。
2019年
1.34 - 自定义Crate仓库:随着Rust越来越多地在生产环境中应用 , 在非公共领域运行项目的需求也越来越大 。 尽管cargo允许依赖于异地的git代码仓库 , 但有了自定义Crate仓库 , 各个公司就可以很轻松地构建并共享自己的仓库 , 用于自己的项目中 , 就跟crates.io一样 。
1.39 - Async/Await:async/await关键字可用于处理Future , 这是Rust开始支持异步编程的一个重要里程碑 。 在Rust发布异步编程后仅仅六个月内就催生了各种各样高性能的生态系统 。
2020年
1.42 - subslice模式:尽管不是最大的改动 , 但 ..(其余)模式的添加能够极大地提高代码在带有slice的模式匹配方面的表达性 。
错误诊断
我们没有提过过多的一点就是Rust的错误信息和诊断从1.0开始就在不断改进 。 现在看看最初的错误信息 , 就像是看着一个完全不同的语言一样 。
下面的几个例子展示了错误信息的改进 , 以及这些改进对于用户理解错误和修复错误的重要性 。
第一个例子(Traits)
use std::io::Write;fn trait_obj(w: &Write) { generic(w);}fn generic<W: Write>(_w: &W) {}1.2.0的错误信息
CSDN年仅 5 岁的 Rust 如何成为最受欢迎的编程语言?
本文插图
1.43.0的错误信息
CSDN年仅 5 岁的 Rust 如何成为最受欢迎的编程语言?
本文插图
第二个例子(help)
fn main { let s = "".to_owned; println!("{:?}", s.find("".to_owned));}1.2.0错误信息


推荐阅读