专栏名称: 程序人生
十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过数十人的团队,还带领一班兄弟姐妹创过业,目前在硅谷一家创业公司担任 VP。关注程序人生,了解程序猿,学做程序猿,做好程序猿,让我们的程序人生精彩满满。
目录
相关文章推荐
程序员小灰  ·  以后是彻彻底底的小生意时代 ·  昨天  
阿里云云栖号  ·  重磅发布 ... ·  昨天  
老刘说NLP  ·  RAG&KG&LLM&文档智能四大领域技术前 ... ·  昨天  
伯乐在线  ·  周鸿祎:准备干掉 360 整个市场部! ·  2 天前  
伯乐在线  ·  周鸿祎:准备干掉 360 整个市场部! ·  2 天前  
51好读  ›  专栏  ›  程序人生

肝了三个视频:Rust 宏编程系列

程序人生  · 公众号  · 程序员  · 2022-01-17 21:00

正文

请到「今天看啥」查看全文


这个长周末,Tubi Holiday 加马丁路德金日,一下子整出来四天假期,于是我有了大段的时间开始构思在《Rust 第一课》中,读者们呼声很高的宏编程,打算搞个加餐。写文字的时候,我突然想到,何不就要写的代码做个 live coding,录成视频,一鱼多吃?于是,就有了这个「Rust 过程宏」系列的三期视频。

第一期,我不用 syn/quote 徒手写了个通过 JsonSchema 生成 Rust struct 的函数宏,从最底层的逻辑出发,让大家了解 Rust 的 TokenStream,以及如何把包含代码的字符串转换成 TokenStream。感谢 Rust 的 FromStr trait,这个从字符串到 TokenStream 的动作简单到就是一个 s.parse().unwrap()

第二期,我使用 syn/quote 做了一个派生宏 Builder,可以为数据结构生成 builder 方法,让数据结构可以用非常简单直观的方法初始化。这个 Builder 宏的需求来自于 dtolnay 的 proc-macro-workshop 中的一个练习,Jon Gjengset 在他的 Procedural Macros in Rust 视频中,也使用它作为 proc macro 教学的素材。我大概一年前看的那个视频,它让我受益匪浅。不过,我不喜欢在宏处理的上下文中做所有的事情,而更加倾向于通过构建良好的数据结构,从 TokenStream 中获取我需要使用的数据,然后在自己的数据结构做进一步的处理,而非直接和TokenStream 或者 DeriveInput 打交道。







请到「今天看啥」查看全文