Rust 1.15 引入自定义derive特性

栏目: 编程语言 · Rust · 发布时间: 6年前

内容简介:Rust 1.15 引入自定义derive特性

Rust核心团队发布了Rust 1.15稳定版,新增了备受期待的自定义derive特性,让代码生成工具(如Serde和Diesel)能最大效能地工作。

RFC 1681 文档中解释了自定义derive的动机:

目前生态系统中的一些大项目,如Serde和Diesel,需要nightly版本的Rust编译器才可以有效地工作。虽然大多数项目在Rust稳定版本上都有替代的方案,但往往不能发挥最大效能,也有自身的一些缺点,而且从经验上来看不能够带来nightly版本用户同样的稳定性......

然而,好消息是,这些项目几乎都是由于程序宏的原因而使用nightly版本。而且除了自定义derive以外,程序宏的全部功能在其他功能中很少使用!更好的消息是,自定义derive通常不需要彻底的宏系统所应当具备的一些特性,例如卫生(hygiene)和模块化。正常的程序宏通常具有这些特性。

博文 《公布Rust 1.15》 中提供了一个Diesel的例子:

// some extern crate and use lines elided here
#[derive(Queryable)]
struct Pet {
    name: String,
}
fn main() {
    use diesel_demo::schema::pets::dsl::*;
    let connection = establish_connection();
    let results = pets
        .limit(5)
        .load::

 (&connection)
        .expect("Error loading pets");
    println!("Displaying {} pets", results.len());
    for pet in results {
        println!("{}", pet.name);
    }
}

除了自定义derive,Rust 1.15的其他改进包括使用Cargo重写的构建系统。Rust团队评论说:

考虑到Rust所有的开发都在主分支上,去年12月我们开始使用并且运作良好。在一个未关闭的PR中完全删除了Makefile,我们将会在Rust 1.17中采纳。它为rustc铺平道路,在编译器中可以像其他Rust项目一样使用crates.io中的包。

在其他重要领域,随着1.15稳定版本的发布,Rust实现了对 i686-unknown-openbsdMSP430 以及 ARMv5TE3层支持 。Hacker News上关于Rust版本发布的 讨论 中,用户thenewwazoo 评论 说“哇!MSP430的支持是伟大的。也许你不知道,这是一个众所周知的超低功耗单片机......这可能是目前唯一一个低于32位的平台。我知道支持8位AVR架构还需要继续努力,但MSP430让Rust更接近超低功耗应用。”

其他用户对于Rust 1.15的发布同样非常兴奋。Dikaiosune ,“这是非常重要的。知道这次发布后,我可以删除小型Web后端中所有nightly版本的功能标志,该Web后端中大量使用了类型驱动的代码生成工具(Serde以及Diesel)。自定义derive拥有稳定性保证,真是太好了。太激动了!”

Ekidd表示赞同,并 补充 说,“我们有一堆Rust应用程序在工作,只有一个仍然使用nightly版本,现在我们也可以把它迁移到稳定版本了。我们可以在其他地方摆脱一堆build.rs脚本了,这总是好的。”

Rust1.15详细的发布说明可以在 GitHub 上获取,并且可以在 这里 下载安装包。

查看英文原文: Rust 1.15 Brings Custom Derive

感谢王纯超对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深度探索C++对象模型(影印版)

深度探索C++对象模型(影印版)

Stanley B. Lippman / 中国电力出版社 / 2003-8-1 / 42.00

本书重点介绍了C++面向对象程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承和虚拟——虚拟函数和虚拟继承。书中向你表明:理解底层实现模型,可以极大地提高你的编码效率。Lippman澄清了那些关于C++系统开销与复杂性的各种错误信息和猜测,指出了其中某些成本和利益交换确实存在。他在书中详述了各种实现模型,指出了它们的发展方向以及促使其发展的根本原因。本书涵盖了C++对象模型的语意暗示......一起来看看 《深度探索C++对象模型(影印版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换