0.0.1 2021年9月28日

#5 in #go-to-rust

MIT 许可证

5KB

gostd_derive.

为gostd提供proc_macro_derive库。

格式化

使用宏来模拟Go中的Stringer接口。 在Go的printf函数中,自动打印自定义实现的String方法返回的内容。

  • 使用方法

#[derive(格式化)]

示例

#[derive(Fmt)]
struct Foo{
 ...
}

// 必须为附加Fmt继承宏的Struct 或者 Emun 实现String方法才能正常运行
impl Foo {

    fn String()->String{
        ...
    }
}
  • 功能逻辑

Fmt功能通过继承Display并调用String()方法,在println!()中实现自定义打印格式。

功能的Rust表示如下。

impl fmt::Display for Foo {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.String())
    }
} 
  • 如何调试

本库仅使用官方的proc_macro,无法调试。 唯一方法是运行 cargo check 检查,如果没有错误则问题不大。

依赖

~1.5MB
~35K SLoC