作用
通过派生宏 #[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文章
57浏览量
3009
原文标题:【大家的项目】利用 Rust 过程宏实现的 derive-with 库
文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
如何在Rust中连接和使用MySQL数据库
MySQL是一个广泛使用的关系型数据库,Rust作为一门相对较新的系统级编程语言,具有C语言般的高性能、安全、并发等特性,因此与MySQL一起使用是一种非常有趣的选择。在本教程中,我们将手把手地展示
如何使用Serde进行序列化和反序列化
Serde 是一个用于序列化和反序列化 Rust 数据结构的库。它支持 JSON、BSON、YAML 等多种格式,并且可以自定义序列化和反序列化方式。Serde 的特点是代码简洁、易于使用、性能高效
如何使用Rust的标准库和structopt库来处理控制台参数
Rust是一种安全、高效的系统编程语言,其标准库以及外部库提供了很多处理控制台参数的方式。在本篇文章中,我们将分别介绍如何使用Rust的标准库
如何利用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次下载
Rust GUI 库发展现状
Rust GUI 库发展现状 最近有一篇关于 Rust GUI 的博客,这不,kas 这个 Another GUI toolkit 框架也针对 Rust 的 GUI 框架现状进行了
Chromium正式开始支持Rust
Chromium 正式开始支持 Rust 目前的支持只是第一阶段,在C++代码中使用Rust写的第三方库(编译成.so)。估计明年Chromium的二进制发行文件中会包含rust写
为什么我们从C++语言转向Rust语言呢?
gtk4-rs代码库包含GTK4的Rust crates。还有个庞大的GObject库生态系统,其中许多库基于gtk-rs中包含的Rust绑
基于Rust的Log日志库介绍
了一种简单的方法来实现日志记录,本文将介绍如何使用Rust的Log库作为日志门面,并结合env_logger和log4rs两个日志库的实战用例进行深入探讨。
Rust的标准库的功能划分
对于大部分软件开发工程师而言,他们用Rust主要开发应用层软件,也就是运行在用户空间的程序。它们基于标准库编写,实现各种业务功能。应用层的软件并非所有模块和函数都涉及到系统调用(例如一些用于操作字符串和处理错误的函数,就无需调用
基于Rust的嵌入式符合ACID的键值数据库
surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的键值数据库
评论