Skip to main content

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}