Skip to main content

reifydb_client_derive/
lib.rs

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