An open API service indexing awesome lists of open source software.

https://github.com/wandercn/gostd_derive

proc_macro_derive library for gostd.
https://github.com/wandercn/gostd_derive

go-to-rust gostd gostd-derive proc-macro-derive rust-macro

Last synced: 3 months ago
JSON representation

proc_macro_derive library for gostd.

Awesome Lists containing this project

README

          

# [gostd_derive](https://github.com/wandercn/gostd_derive)

[![crates.io](https://img.shields.io/crates/v/gostd_derive.svg?color=yellow)](https://crates.io/crates/gostd_derive)
[![Released API docs](https://docs.rs/gostd_derive/badge.svg)](https://docs.rs/gostd_derive)
[![GPL3 licensed](https://img.shields.io/github/license/wandercn/gostd_derive.svg)](./LICENSE)
[![Downloads of Crates.io](https://img.shields.io/crates/d/gostd_derive.svg)](https://crates.io/crates/gostd_derive)
[![Lines of code](https://img.shields.io/tokei/lines/github/wandercn/gostd_derive.svg)](#)
[![Build](https://img.shields.io/github/workflow/status/wandercn/gostd/Rust.svg)](#)
[![Languages](https://img.shields.io/github/languages/top/wandercn/gostd_derive.svg)](#)

proc_macro_derive library for [gostd](https://github.com/wandercn/gostd).

## Fmt

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

- 使用方法

`#[derive(Fmt)]`

example:
```
use gostd_derive::Fmt;

#[derive(Fmt)]
struct Foo{
name:String,
}

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

fn String()->String{
"test".to_string()
}
}
```

- 功能逻辑

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

功能的rust表示如下。
```rust
impl fmt::Display for Foo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.String())
}
}
```

- 如何调试

本库只使用官方的proc_macro没有办法调试。
唯一方法,只有运行 `cargo check` 检查,不报错就没问题。