reifydb_macro_impl/lib.rs
1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (c) 2025 ReifyDB
3
4//! Implementation for ReifyDB derive macros.
5//!
6//! This crate provides the implementation logic used by proc-macro crates.
7//! It's not intended for direct use - use `reifydb-macro`, `reifydb-derive`,
8//! or `reifydb-client-derive` instead.
9
10// #![cfg_attr(not(debug_assertions), deny(warnings))]
11
12pub mod from_frame;
13pub mod generate;
14pub mod parse;
15
16use proc_macro2::TokenStream;
17
18/// Derive `FromFrame` with the default crate path (reifydb_type).
19pub fn derive_from_frame(input: TokenStream) -> TokenStream {
20 derive_from_frame_with_crate(input, "reifydb_type")
21}
22
23/// Derive `FromFrame` with a custom crate path.
24///
25/// # Arguments
26/// * `input` - The derive macro input TokenStream
27/// * `crate_path` - The crate path to use (e.g., "reifydb", "reifydb_client", "reifydb_type")
28pub fn derive_from_frame_with_crate(input: TokenStream, crate_path: &str) -> TokenStream {
29 match parse::parse_struct_with_crate(input, crate_path) {
30 Ok(parsed) => from_frame::expand(parsed),
31 Err(err) => err,
32 }
33}