主要观点:Remon 是一位负责的库开发者,其库有自动化测试和详尽文档等特点,她关注稳定性、灵活性和正确性。她创作的一个宏 oh_my!
起初存在变量绑定不卫生的问题,经过多次修改,虽解决了部分问题但仍有不足,最终她选择保留稍不卫生的状态。
关键信息:
- Remon 关心 Rust 文化和传统,其宏使用混合位点卫生规则。
- 最初的宏
oh_my!
中let Ok(x)
存在变量绑定不卫生导致错误。 - 通过将模式改为
let Ok(x @ _)
试图解决问题,但又出现编译错误。 - 最后引入新作用域并定义一个虚拟函数,解决了卫生问题,但增加了代码量和文档负担,Remon 最终选择保留稍不卫生的状态。
重要细节: - 给出了导致错误的代码示例
const x: &str = "26ad109e6f4d14e5cc2c2ccb1f5fb497abcaa223"; oh_my!();
。 - 解释了
let
绑定不能遮蔽常量以及函数可被遮蔽等规则。 - 展示了修改后的宏代码
macro_rules! oh_my { () => {{ #[allow(dead_code)] fn x() {} let Ok(x) = read_input() else { return Err(Error) }; $crate::process(x); }}; }
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。