reifydb_derive/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4//! Derive macros for ReifyDB that generate code using `reifydb` crate paths.
5//!
6//! This crate is re-exported by the `reifydb` crate, so users typically don't
7//! need to depend on it directly.
8
9use proc_macro::TokenStream;
10
11/// Derives `FromFrame` for a struct, enabling deserialization from a Frame.
12///
13/// Generated code references types from the `reifydb` crate.
14///
15/// # Attributes
16///
17/// - `#[frame(column = "name")]` - Use a different column name than the field name
18/// - `#[frame(optional)]` - Field is optional; missing columns or None values become None
19/// - `#[frame(coerce)]` - Use widening type coercion for this field
20/// - `#[frame(skip)]` - Skip this field (must implement Default)
21#[proc_macro_derive(FromFrame, attributes(frame))]
22pub fn derive_from_frame(input: TokenStream) -> TokenStream {
23 reifydb_macro_impl::derive_from_frame_with_crate(input.into(), "reifydb").into()
24}