作用
通過派生宏 #[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瀏覽量
3011
原文標題:【大家的項目】利用 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 的鍵值數據庫
評論