Skip to main content

reifydb_macro_impl/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4//! Parsing, validation and codegen for the derive macros, so every public proc-macro crate re-exports one shared
5//! expansion. Application code depends on those crates, never on this one.
6
7#![cfg_attr(not(debug_assertions), deny(clippy::disallowed_methods))]
8#![cfg_attr(debug_assertions, warn(clippy::disallowed_methods))]
9#![cfg_attr(not(debug_assertions), deny(warnings))]
10#![allow(clippy::tabs_in_doc_comments)]
11
12pub mod catalog_shape;
13pub mod from_frame;
14pub mod generate;
15pub mod heap_size;
16pub mod operator_state;
17pub mod parse;
18
19use proc_macro2::TokenStream;
20
21pub fn derive_from_frame(input: TokenStream) -> TokenStream {
22	derive_from_frame_with_crate(input, "reifydb_value")
23}
24
25pub fn expand_catalog_shape(input: TokenStream) -> TokenStream {
26	catalog_shape::catalog_shape(input)
27}
28
29pub fn derive_heap_size(input: TokenStream) -> TokenStream {
30	heap_size::derive_heap_size(input)
31}
32
33pub fn operator_state_with_crate(
34	attr: TokenStream,
35	item: TokenStream,
36	crate_path: &str,
37	value_path: &str,
38) -> TokenStream {
39	operator_state::operator_state_impl(attr, item, crate_path, value_path)
40}
41
42pub fn derive_from_frame_with_crate(input: TokenStream, crate_path: &str) -> TokenStream {
43	match parse::parse_struct_with_crate(input, crate_path) {
44		Ok(parsed) => from_frame::expand(parsed),
45		Err(err) => err,
46	}
47}