primary!() { /* proc-macro */ }Expand description
Define primary enums with automatic PrimaryId trait implementation.
§WDP Naming Convention
Per WDP specification, primary names SHOULD use PascalCase:
- ✅
Token,Connection,Validation,RateLimit - ❌
TOKEN,CONNECTION,VALIDATION(non-standard)
Error codes follow the format: E.Component.Primary.SEQUENCE
- Example:
E.Database.Connection.TIMEOUTnotE.DATABASE.CONNECTION.TIMEOUT
§Metadata Fields
Supports all metadata fields in any order:
description- Documentation stringintroduced- Version introduceddeprecated- Deprecation noticeexamples- Array of example error codesrelated- Array of related primary codes
§Examples
ⓘ
primary! {
Token, // Simple: "Token"
Connection { // With metadata
description: "Connection errors",
related: ["Timeout", "Pool"],
},
}
// Generated code implements PrimaryIdDocumented trait:
let desc = Primary::Connection.description(); // Trait method
let related = Primary::Connection.related();