内容简介: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-openbsd 、 MSP430 以及 ARMv5TE 的 3层支持 。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 )关注我们。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Ansible 2.7 正式发布,引入更多新特性
- Ansible 2.7 正式发布,引入更多新特性
- Clojure 1.9引入Spec和更多语言特性
- Kotlin 1.3.30 发布,改进性能和引入新特性
- Kotlin 1.2.30 发布,引入新特性并修复 Bug
- Fedora 28 Beta 发布,引入全新特性模块化仓库
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度探索C++对象模型(影印版)
Stanley B. Lippman / 中国电力出版社 / 2003-8-1 / 42.00
本书重点介绍了C++面向对象程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承和虚拟——虚拟函数和虚拟继承。书中向你表明:理解底层实现模型,可以极大地提高你的编码效率。Lippman澄清了那些关于C++系统开销与复杂性的各种错误信息和猜测,指出了其中某些成本和利益交换确实存在。他在书中详述了各种实现模型,指出了它们的发展方向以及促使其发展的根本原因。本书涵盖了C++对象模型的语意暗示......一起来看看 《深度探索C++对象模型(影印版)》 这本书的介绍吧!