Expand description
§derive-defs
Library for generating derive preset macros from TOML configuration.
This crate provides functionality to parse TOML configuration files and generate proc-macro code for derive attribute presets.
§Overview
derive-defs allows you to define named sets of derive attributes
through a declarative TOML configuration. This is useful when you have
common derive patterns that you use repeatedly across your codebase.
§Quick Start
- Create a
derive_defs.tomlconfiguration file:
[defs.serialization]
traits = ["Clone", "Serialize", "Deserialize"]
attrs = ['#[serde(rename_all = "camelCase")]']
[defs.model]
traits = ["Debug", "Clone", "PartialEq"]- Add to your
build.rs:
derive_defs::generate("derive_defs.toml")
.expect("Failed to generate derive defs");- Use the generated macros in your code:
ⓘ
use my_crate_macros::*;
#[serialization]
struct User {
name: String,
age: u32,
}§Features
- Declarative Configuration: Define derive presets in TOML, not code
- Inheritance: Bundles can extend other bundles via
extends - Cross-file Imports: Split configuration across multiple files
- Runtime Modification: Use
omit/addto modify bundles at use site
§TOML Configuration
§Basic Syntax
[defs.<name>]
traits = ["Trait1", "Trait2"] # List of derive traits
attrs = ["#[attr]"] # Additional attributes
extends = "<parent>" # Inheritance (optional)§Inheritance
[defs.base]
traits = ["Debug", "Clone"]
[defs.value_object]
extends = "base"
traits = ["PartialEq", "Eq", "Hash"]
# Result: Debug, Clone, PartialEq, Eq, Hash§Cross-file Imports
[includes]
common = "shared/common_defs.toml"
[defs.api_response]
extends = "common.serialization"
traits = ["Default"]§API Usage
§Attribute Modifiers
ⓘ
// Basic usage
#[serialization]
struct User { ... }
// Exclude Clone from the bundle
#[serialization(omit(Clone))]
struct Session { ... }
// Add Default and Hash to the bundle
#[serialization(add(Default, Hash))]
struct Config { ... }
// Exclude serde attributes
#[serialization(omit_attrs(serde))]
struct Internal { ... }
// Combination
#[serialization(omit(Clone), add(Copy))]
struct Flags { ... }§Error Handling
The crate provides clear error messages at build.rs time:
- Circular inheritance detection
- Undefined parent references
- Missing include files
- Duplicate definition names
Modules§
- codegen
- Proc-macro code generation.
- includes
- Cross-file include resolution.
- parser
- TOML configuration parser.
- prelude
- Common imports for convenience.
- resolver
- Definition resolver with inheritance support.
- validation
- Validation utilities for derive-defs configuration.
Enums§
- Error
- Errors that can occur during code generation.
Functions§
- generate
- Generate proc-macro code from a TOML configuration file.
- generate_
from_ resolved - Generate proc-macro code from an already resolved configuration.
- generate_
to - Generate proc-macro code from a TOML configuration file with custom output path.
Type Aliases§
- Result
- Result type alias for this crate.