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 )关注我们。


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

查看所有标签

猜你喜欢:

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

Python网络数据采集

Python网络数据采集

米切尔 (Ryan Mitchell) / 陶俊杰、陈小莉 / 人民邮电出版社 / 2016-3-1 / CNY 59.00

本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。一起来看看 《Python网络数据采集》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具