写点什么

Rust 1.15 引入自定义 derive 特性

  • 2017-02-12
  • 本文字数:1277 字

    阅读完需:约 4 分钟

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::<pet>(&connection)
.expect("Error loading pets");
println!("Displaying {} pets", results.len());
for pet in results {
println!("{}", pet.name);
}
}
</pet>

除了自定义 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 )关注我们。

2017-02-12 18:002677
用户头像

发布了 31 篇内容, 共 10.3 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Navicat Premium 15:可多重连接的数据库开发工具(Mac&win)

Rose

好用的mac电脑窗口管理工具:Magnet for mac

理理

Photoshop2024版本电脑配置要求

Rose

photoshop 2021 for mac(PS 2021直装版)v22.4.2大师版 支持M1/M2

Rose

图解Docker Compose 架构设计分析与全攻略:构建、扩展和综合案例(第二部分)

肖哥弹架构

Docker 运维

影棚模拟器set.a.light 3D STUDIO for mac永久版

理理

BetterTouchTool mac版定制手势 mac触摸板增强工具

理理

Microsoft Office 2019免激活版—mac&win

Rose

AutoCAD2021( 附安装教程图解)-cad2021自带中文语言

Rose

Git 版本控制系统的图形化客户端程序 SmartGit for Mac永久许可证

理理

我们应该在忙时还是闲时发布?

agnostic

运维

如何选择适合你的项目工程项目管理系统:10个推荐

爱吃小舅的鱼

工程项目管理

需要工时管理软件?看看2024的10款选择

爱吃小舅的鱼

工时管理

Downie4最常用的几种下载方法,全能网页视频下载工具Downie使用教程

Rose

Final Cut Pro X 清除缓存方法(附Final Cut Pro 中文版安装包)

Rose

Astute Graphics for Mac(全系列ai插件合集)下载及安装教程

理理

Mac 版 Logic Pro 内含一整套用于专业歌曲创作、节拍制作、编辑和混音的精细创意工具

理理

DevOps实践:10款优秀软件工具,助力企业文件管理与协作

爱吃小舅的鱼

文档管理 文档管理工具

Axure RP 9中文授权版详细图文安装教程 Mac交互式产品原型设计

Rose

Visual Studio Code(简称VS Code)mac上好用免费的微软代码编辑器

理理

AI绘画实现数字人2D形象生成及3D数字人视频生成

陆通

开发. AI 视频处理

企业管理必备!10款文档管理软件助力效率提升

爱吃小舅的鱼

文档管理 文档管理工具

AI文本生成UI稿神器Galileo,程序员做独立开发必备

陆通

十款可视化项目管理系统全面评测:哪款适合您?

爱吃小舅的鱼

项目管理 可视化

如何利用ChatGPT开发一个盈利的AI写作助手网站

陆通

macOS Big Sur 11 系统中如何开启触控板三指拖拽功能?

Rose

苹果电脑实用软件:SwitchResX for Mac屏幕分辨率修改工具

理理

2019excel for mac下载安装-免激活永久使用

理理

如何使用ChatGPT API及Bito插件

陆通

谷歌访问助手(谷歌浏览器插件)

Rose

Microsoft PowerPoint 2019 for mac永久使用 含PowerPoint 2019激活工具

理理

Rust 1.15 引入自定义derive特性_开源_James Chesters_InfoQ精选文章