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上获取,并且可以在这里下载安装包。

本文转自d1net(转载)

相关文章
|
7月前
|
Rust 区块链
学Rust不学Cargo,等于没学Rust:features特性详解
在 Rust 中,Cargo 的 "features" 是一种条件编译机制,允许在编译 crate 时编译部分代码。这样可以在一个 crate 中提供多个功能,并根据需要选择性地启用或禁用这些功能。
226 1
|
7月前
|
存储 Rust 程序员
【一起学Rust | 基础篇 | rust新特性】Rust 1.65.0——泛型关联类型、let-else语句
【一起学Rust | 基础篇 | rust新特性】Rust 1.65.0——泛型关联类型、let-else语句
109 0
|
1月前
|
Rust 安全 Java
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第27天】Rust语言以其独特的特性和优势在编程领域迅速崛起。本文介绍Rust的核心特性,如所有权系统和强大的并发处理能力,以及其性能和安全性优势。通过实战示例,如“Hello, World!”和线程编程,帮助读者快速入门Rust。
73 1
|
1月前
|
Rust 安全 编译器
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第26天】Rust语言诞生于2006年,由Mozilla公司的Graydon Hoare发起。作为一门系统编程语言,Rust专注于安全和高性能。通过所有权系统和生命周期管理,Rust在编译期就能消除内存泄漏等问题,适用于操作系统、嵌入式系统等高可靠性场景。
93 2
|
2月前
|
Rust 编译器 开发者
Rust宏之derive的设计及实战
【10月更文挑战第18天】在 Rust 中,`derive` 宏是一种自动生成代码的工具,可为结构体和枚举类型自动实现特定 trait,减少重复代码。它通过语法糖简化代码,支持 Debug、Clone、PartialEq 等 trait 的自动实现,并允许开发者自定义 `derive` 宏以扩展功能。
|
4月前
|
Rust JavaScript 前端开发
Rust! 无VDom! 尤雨溪解析 Vue.js 2024 新特性
Rust! 无VDom! 尤雨溪解析 Vue.js 2024 新特性
|
4月前
|
Rust 安全 Java
神秘编程世界惊现独特规则,Rust 核心特性究竟隐藏着怎样的秘密?快来一探究竟!
【8月更文挑战第31天】在编程领域,Rust 以所有权、借用和生命周期等核心特性著称,提供强大的内存安全保障。所有权确保每个值有唯一所有者并自动管理内存,避免手动管理内存带来的问题。借用则允许临时访问值而不转移所有权,确保内存安全访问。生命周期机制在编译时保证引用的有效性,无需运行时检查。通过对比 Rust 与 C/C++ 的示例,可以更清晰地理解这些特性带来的优势。
42 1
|
4月前
|
Rust Shell 开发者
7步开始rust(自定义环境安装与vscode开发环境配置)
本文档详细记录了当改变Rust安装路径至特定目录(如 `/home/local_rust`)时,如何在VSCode环境中正确配置Rust开发环境的过程。主要包括:设置环境变量、使用清华大学镜像安装Rust及更新镜像源、手动部署 `rust-analyzer`、安装标准库源码、安装与配置VSCode插件等七个步骤,确保开发者能够顺利搭建并使用定制化的Rust开发环境。
759 0
|
6月前
|
Rust 安全 开发者
探索Rust语言的内存安全特性
【6月更文挑战第8天】Rust语言针对内存安全问题提供了创新解决方案,包括所有权系统、借用规则和生命周期参数。所有权系统确保值与其所有者绑定,防止内存泄漏;借用规则保证同一时间只有一个可变引用或多个不可变引用,消除数据竞争和野指针;生命周期参数则强化了引用的有效范围,提升安全性。通过这些特性,Rust帮助开发者编写出更健壮、安全的高性能软件,有望成为系统编程领域的领头羊。
|
7月前
|
Rust 安全 程序员
Rust vs Go:解析两者的独特特性和适用场景
在讨论 Rust 与 Go 两种编程语言哪种更优秀时,我们将探讨它们在性能、简易性、安全性、功能、规模和并发处理等方面的比较。同时,我们看看它们有什么共同点和根本的差异。现在就来看看这个友好而公平的对比。