2 releases

0.1.1 Mar 17, 2024
0.1.0 Sep 22, 2023

#1841 in Procedural macros

Download history 1/week @ 2024-02-09 11/week @ 2024-02-16 18/week @ 2024-02-23 12/week @ 2024-03-01 14/week @ 2024-03-08 147/week @ 2024-03-15 26/week @ 2024-03-22 53/week @ 2024-03-29 17/week @ 2024-04-05

244 downloads per month
Used in 4 crates (2 directly)

Apache-2.0 OR MIT

7KB
101 lines

#[derive(ToTokens)], calling quote::ToTokens on each field. Nothing more, nothing less.

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(),
);

Enums work too.

#[derive(ToTokens)]
enum Arrow {
     Left(Token![<], Token![-]),
    Right(Token![-], Token![>]),
}

lib.rs:

#[derive(ToTokens)], calling quote::ToTokens on each field. Nothing more, nothing less.

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(),
);

Enums work too.

#[derive(ToTokens)]
enum Arrow {
     Left(Token![<], Token![-]),
    Right(Token![-], Token![>]),
}

Dependencies

~0.4–0.8MB
~20K SLoC