Skip to main content

picante_macros/
lib.rs

1#![warn(missing_docs)]
2
3//! Proc macros for Picante (`#[picante::input]`, `#[picante::tracked]`, etc.).
4
5use proc_macro::TokenStream;
6
7mod db;
8mod input;
9mod interned;
10mod struct_item;
11mod tracked;
12mod util;
13
14/// Generate a memoized derived query from an async function.
15#[proc_macro_attribute]
16pub fn tracked(_attr: TokenStream, item: TokenStream) -> TokenStream {
17    tracked::expand(item)
18}
19
20/// Generate an interned-key input "entity" from a struct definition.
21#[proc_macro_attribute]
22pub fn input(_attr: TokenStream, item: TokenStream) -> TokenStream {
23    input::expand(item)
24}
25
26/// Generate an interned "entity" from a struct definition.
27#[proc_macro_attribute]
28pub fn interned(_attr: TokenStream, item: TokenStream) -> TokenStream {
29    interned::expand(item)
30}
31
32/// Generate a database struct wiring together ingredients and runtime.
33#[proc_macro_attribute]
34pub fn db(attr: TokenStream, item: TokenStream) -> TokenStream {
35    db::expand(attr, item)
36}