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就可以解决语法改动的问题 。
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的错误信息 本文插图
1.43.0的错误信息
本文插图
第二个例子(help)
fn main { let s = "".to_owned; println!("{:?}", s.find("".to_owned));}1.2.0错误信息
推荐阅读
- 笙笙千离|金晨穿拖鞋跳舞上热搜,刚满30岁的二线女星,能逆袭成功吗?
- 新民晚报|惊艳了时光!上海这座近90岁的老建筑重新开放!可以免费参观啦
- 俞飞鸿|49岁的俞飞鸿依旧满脸的胶原蛋白,黑白素色搭配难以遮掩女人魅力
- 陈长怀讲肿瘤|69岁的吴先生,肝上长个3.4x2.7cm的肿瘤,这样用药后,病情大好
- 李莎|21岁的青春定格在支教路上
- 俊蘭的体育世界|22岁的邱天上限在哪儿?,涨球了!复赛后场均5.5分
- 光明网|21岁的青春定格在支教路上
- 虎妞娱乐汇 网友:我自闭了,比刘强东大5岁的丈母娘长啥样?看见照片后
- 秦汉边说|碰到两位可怕的人,彻底刷的他的认知!,47岁的诸葛亮
- 21岁的青春定格在支教路上
