2个版本
0.1.1 | 2024年3月17日 |
---|---|
0.1.0 | 2023年9月22日 |
1792 在 进程宏 中
每月下载量 32
用于 4 个crate(2个直接使用)
7KB
101 代码行
#[derive(ToTokens)]
,对每个字段调用 quote::ToTokens
。不多也不少。
use derive_quote_to_tokens::ToTokens;
use quote::{ToTokens, quote};
use proc_macro2::Span;
use syn::{Token, Ident};
#[derive(ToTokens)]
struct Tag {
lt: Token![<],
inner: Ident,
gt: Token![>],
}
let tag = /* snip */
assert_eq!(
tag.to_token_stream().to_string(),
quote! { <main> }.to_string(),
);
枚举也适用。
#[derive(ToTokens)]
enum Arrow {
Left(Token![<], Token![-]),
Right(Token![-], Token![>]),
}
lib.rs
:
#[derive(ToTokens)]
,对每个字段调用 quote::ToTokens
。不多也不少。
use derive_quote_to_tokens::ToTokens;
use quote::{ToTokens, quote};
use proc_macro2::Span;
use syn::{Token, Ident};
#[derive(ToTokens)]
struct Tag {
lt: Token![<],
inner: Ident,
gt: Token![>],
}
let tag = /* snip */
assert_eq!(
tag.to_token_stream().to_string(),
quote! { <main> }.to_string(),
);
枚举也适用。
#[derive(ToTokens)]
enum Arrow {
Left(Token![<], Token![-]),
Right(Token![-], Token![>]),
}
依赖项
~0.4–0.8MB
~20K SLoC