作用
通过派生宏 #[derive(With)] 给结构体字段生成 with_xxx 方法,通过链式调用 with_xxx 方法来构造结构体。
使用方法
1.给 named struct 每个字段生成 with_xxx 方法
#[derive(With)] pubstructFoo{ puba:i32, pubb:String, }
宏生成代码
implFoo{ pubfnwith_a(mutself,a:implInto)->Self{ self.a=a.into(); self } pubfnwith_b(mutself,b:implInto )->Self{ self.b=b.into(); self } }
2.给 tuple struct 每个字段生成 with_xxx 方法
#[derive(With)] pubstructBar(i32,String);
宏生成代码
implBar{ pubfnwith_0(mutself,field_0:implInto)->Self{ self.0=field_0.into(); self } pubfnwith_1(mutself,field_1:implInto )->Self{ self.1=field_1.into(); self } }
3.通过字段名给 named struct 指定字段实现 with_xxx 方法
#[derive(With)] #[with(a)] pubstructFoo{ puba:i32, pubb:String, }
宏生成代码
implFoo{ pubfnwith_a(mutself,a:implInto)->Self{ self.a=a.into(); self } }
4.通过下标给 tuple struct 指定字段生成 with_xxx 方法
#[derive(With)] #[with(1)] pubstructBar(i32,String);
宏生成代码
implBar{ pubfnwith_1(mutself,field_1:implInto)->Self{ self.1=field_1.into(); self } }
也支持结构体中含有泛型、生命周期、引用等。
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
rust语言
+关注
关注
0文章
58浏览量
2958
原文标题:【大家的项目】利用 Rust 过程宏实现的 derive-with 库
文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Rust 语言中的 RwLock内部实现原理
中的 RwLock 的内部实现原理、常用接口的使用技巧和最佳实践。 RwLock 的内部实现原理 基本概念 RwLock 是一种读写分离的锁,允许多个线程同时读取共享数据,但只允许一个线程写入数据。通过这种方式,可以避免读写操作之间的竞争,从而提高并发性能。 在
只会用Python?教你在树莓派上开始使用Rust
用rust_gpiozero条板箱由Rahul Thakdoor撰写。虽然这不是访问GPIO引脚的唯一方法,但此板条箱的设计类似于Python GPIO零库。与其手动下载板条,还可以将其名称粘贴在Cargo.toml中的依赖
发表于 05-20 08:00
怎样去使用Rust进行嵌入式编程呢
使用Rust进行嵌入式编程Use Rust for embedded development篇首语:Rust的高性能、可靠性和生产力使其适合于嵌入式系统。在过去的几年里,Rust在程序
发表于 12-22 07:20
如何利用PyAudio库来实现pzh-py-speech的音频播放和录制功能呢
pzh-py-speech的主要功能是什么?如何利用PyAudio库来实现pzh-py-speech的音频播放和录制功能呢?
发表于 12-23 09:45
RUST在嵌入式开发中的应用是什么
Rust是一种编程语言,它使用户能够构建可靠、高效的软件,尤其是用于嵌入式开发的软件。它的特点是:高性能:Rust具有惊人的速度和高内存利用率。可靠性:在编译过程中可以消除内存错误。生
发表于 12-24 08:34
如何去实现一种基于Rust的单向链表设计呢
利用结构体 (struct) 定义成员变量num 表示当前结点值,next 指向下一个结点的指针。#[derive(Debug)]pub struct List { pub num: i32
发表于 04-27 15:11
如何利用C语言去调用rust静态库呢
感觉比较合适。但如果把主要工作切过来,感觉Rust目前又太荒芜了,而且上面的问题也同样存在。尝试了解到Rust可以编译成静态库,于是动了只用Rust
发表于 06-21 10:27
在Rust代码中加载静态库时,出现错误 ` rust-lld: error: undefined symbol: malloc `怎么解决?
“ [i]malloc ”、“ [i]exit ”。我验证了使用 ` [i]nm ` 命令。
问题是我打算使用 ffi 在 rust 中使用这个静态库。当我尝试在我的 Rust 代码中加载静态
发表于 06-09 08:44
Rust 1.15 引入自定义derive特性有什么做用
Rust核心团队发布了Rust 1.15稳定版,新增了备受期待的自定义derive特性,让代码生成工具(如Serde和Diesel)能最大效能地工作。
发表于 05-17 18:05
•0次下载
评论