zng_var_proc_macros/
lib.rs

1#![doc(html_favicon_url = "https://raw.githubusercontent.com/zng-ui/zng/main/examples/image/res/zng-logo-icon.png")]
2#![doc(html_logo_url = "https://raw.githubusercontent.com/zng-ui/zng/main/examples/image/res/zng-logo.png")]
3//!
4//! Proc-macros for the `zng-var` crate.
5//!
6//! # Crate
7//!
8#![doc = include_str!(concat!("../", std::env!("CARGO_PKG_README")))]
9#![warn(unused_extern_crates)]
10#![warn(missing_docs)]
11
12use proc_macro::TokenStream;
13
14#[macro_use]
15extern crate quote;
16
17#[macro_use]
18mod util;
19
20mod expr_var;
21mod merge_var;
22mod transitionable;
23mod when_var;
24
25/// Implement transition by delegating all type parts.
26#[proc_macro_derive(Transitionable)]
27pub fn transitionable(args: TokenStream) -> TokenStream {
28    transitionable::expand(args)
29}
30
31#[doc(hidden)]
32#[proc_macro]
33pub fn expr_var(input: TokenStream) -> TokenStream {
34    expr_var::expand(input)
35}
36
37#[doc(hidden)]
38#[proc_macro]
39pub fn when_var(input: TokenStream) -> TokenStream {
40    when_var::expand(input)
41}
42
43#[doc(hidden)]
44#[proc_macro]
45pub fn merge_var(input: TokenStream) -> TokenStream {
46    merge_var::expand(input)
47}