什么是Epoch.Next
Epoch.Next 是Rust的下一个新的epoch(大版本)的代号。如果没有什么意外的话,应该是在2018年发布。 这里所有的RFC都已经准备好了。大约一半已经在nightly版本上提供,这些会在下个epoch进入稳定版本。
什么是epoch
Epoch是Rust语言的大版本机制,与编译器的版本不同。在Rust里每个库都有一个epoch,默认为Rust 1.0开始的版本,也就是Epoch 2015。在Rust演进的过程中,除了增加以外,有些功能、语法可能被淘汰掉,从而破坏向后兼容性。Rust的规定是,这些被淘汰掉的东西会在下个epoch变成警告,而在下下个epoch变成错误,从而实现Rust的持续演进。现在(2018年1月1日),Rust团队已经开始规划第二个epoch了,暂称为Epoch.Next。在第三个epoch里,一些决定废弃的东西(比如当前的trait object 语法),就会变成编译错误。
Epoch.Next 有哪些内容
主要有四大方面:
- 所有权管理
- 简化match中对借用的使用: #![feature(match_default_bindings)]
- 智能借用范围推断(NLL): #![feature(nll)]
- 对生命周期参数使用的改进,包括生命周期匿名参数'_ 和增加允许省略的情况 #![feature(underscore_lifetimes, in_band_lifetimes)]
- 自动推断生命周期参数和泛型参数之间的关系
- 特征系统
- impl Trait(自动推断类型),dyn Trait(trait object) #![feature(universal_impl_trait, conservative_impl_trait, dyn_trait)]
- 闭包支持Copy 和 Clone #![feature(copy_closures, clone_closures)]
- 约束别名trait Trait = A + B + C; #![feature(trait_alias)]
- 关联泛型类型 #![feature(generic_associated_types)]
- 错误处理
- 为任意类型实现? 操作符 #![feature(try_trait)]
- main() 函数中可以使用? 操作符 #![feature(termination_trait)]
- 模块系统
- use 语法中花括号的任意嵌套 #![feature(use_nested_groups)]
- 调整项目文件结构 #![feature(crate_in_paths, crate_visibility_modifier, non_modrs_mods)]
官方链接
1
共 1 条评论, 1 页
评论区
写评论标题用h3就行啦