| Crates.io | gear-mesh-derive |
| lib.rs | gear-mesh-derive |
| version | 0.1.1 |
| created_at | 2025-12-28 03:48:49.561339+00 |
| updated_at | 2025-12-28 04:04:48.821882+00 |
| description | Derive macros for gear-mesh |
| homepage | https://github.com/UtakataKyosui/GearMesh |
| repository | https://github.com/UtakataKyosui/GearMesh |
| max_upload_size | |
| id | 2008198 |
| size | 25,527 |
Procedural macro for deriving GearMesh trait on Rust types.
This crate provides the #[derive(GearMesh)] macro that automatically implements type conversion for Rust structs and enums.
The derive macro analyzes your Rust types and generates the necessary metadata for TypeScript code generation, including:
Add this to your Cargo.toml:
[dependencies]
gear-mesh = "0.1"
Then derive GearMesh on your types:
use gear_mesh::GearMesh;
#[derive(GearMesh)]
pub struct User {
pub id: i32,
pub name: String,
pub email: String,
}
#[gear_mesh(branded)] - Generate as a Branded Type#[gear_mesh(validate)] - Enable validation#[gear_mesh(bigint = "auto")] - Auto-detect BigInt types#[validate(range(min = 0, max = 100))] - Numeric range validation#[validate(length(min = 1, max = 20))] - String length validation#[validate(email)] - Email format validation#[validate(url)] - URL format validation#[validate(pattern = "regex")] - Regex pattern validationuse gear_mesh::GearMesh;
/// User ID (Branded Type)
#[derive(GearMesh)]
#[gear_mesh(branded)]
pub struct UserId(pub i32);
/// User information
#[derive(GearMesh)]
pub struct User {
/// User's unique identifier
pub id: UserId,
/// User's display name
#[validate(length(min = 1, max = 20))]
pub name: String,
/// User's email address
#[validate(email)]
pub email: String,
/// User's age
#[validate(range(min = 0, max = 150))]
pub age: Option<i32>,
}
The macro:
synGearMeshType intermediate representationGearMeshExport traitinventory for automatic collectionLicensed under either of:
at your option.