< 返回版块

CrLF0710 发表于 2018-01-01 15:28

Tags:语言特性

什么是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 有哪些内容

主要有四大方面:

  1. 所有权管理
  • 简化match中对借用的使用: #![feature(match_default_bindings)]
  • 智能借用范围推断(NLL): #![feature(nll)]
  • 对生命周期参数使用的改进,包括生命周期匿名参数'_ 和增加允许省略的情况 #![feature(underscore_lifetimes, in_band_lifetimes)]
  • 自动推断生命周期参数和泛型参数之间的关系
  1. 特征系统
  • 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)]
  1. 错误处理
  • 为任意类型实现? 操作符 #![feature(try_trait)]
  • main() 函数中可以使用? 操作符 #![feature(termination_trait)]
  1. 模块系统
  • use 语法中花括号的任意嵌套 #![feature(use_nested_groups)]
  • 调整项目文件结构 #![feature(crate_in_paths, crate_visibility_modifier, non_modrs_mods)]

官方链接

Tracking issue

评论区

写评论
Mike Tang 2018-01-01 17:15

标题用h3就行啦

1 共 1 条评论, 1 页