Expand description
§Module :: derive_tools
Facade crate aggregating 30+ derive macros from workspace and external sources, providing a unified feature-gated interface for ergonomic trait derivation.
§Basic use-case
{
use derive_tools::*;
#[ derive( From, Display, FromStr, PartialEq, Debug ) ]
#[ display( "{0}" ) ]
struct Struct1( i32 );
// derived From
let src : Struct1 = 42.into();
let exp = Struct1( 42 );
assert_eq!( src, exp );
// derived Display
let src = Struct1( 42 );
let got = format!( "{}", src );
let exp = "42";
println!( "{}", got );
assert_eq!( got, exp );
// derived FromStr
use std::str::FromStr;
let src = Struct1::from_str( "42" );
let exp = Ok( Struct1( 42 ) );
assert_eq!( src, exp );
}§To add to your project
cargo add derive_tools§Try out from the repository
git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/derive_tools_trivial
cargo run§Rule Compliance & Architectural Notes
This crate has been systematically updated to comply with the Design and Codestyle Rulebooks. Key compliance achievements :
§Completed Compliance Work :
-
Feature Architecture : All functionality is properly gated behind the “enabled” feature following the mandatory ‘enabled’ and ‘full’ features requirement.
-
Dependencies : Uses workspace dependency inheritance with
{ workspace = true }. All derive macro dependencies are centralized in the workspace Cargo.toml. -
Attribute Formatting : All attributes use proper spacing per Universal Formatting Rule.
-
Documentation Strategy : Uses
#![ doc = include_str!(...) ]to include readme.md instead of duplicating documentation. -
Namespace Organization : Uses the standard own/orphan/exposed/prelude namespace pattern for controlled visibility and re-exports.
Modules§
- _private_
phf_ reexport_ for_ macro_ if_ phf_ feature - Rust-PHF is a library to generate efficient lookup tables at compile time using perfect hash functions.
- additional_
attributes - Documentation for Additional Attributes
- clone_
dyn - Dynamic cloning utilities
- dependency
- Namespace with dependencies.
- exposed
- Exposed namespace of the module.
- orphan
- Orphan namespace of the module.
- own
- Own namespace of the module.
- prelude
- Prelude to use essentials:
use my_module ::prelude :: *. - variadic
- Variadic conversion utilities
Macros§
- from
- Macro to construct a struct from variadic arguments.
Enums§
- Parse
Error - The
ParseErrorenum is a collection of all the possible reasons an enum can fail to parse from a string.
Traits§
- AsStatic
Ref Deprecated - A cheap reference-to-reference conversion. Used to convert a value to a
reference value with
'staticlifetime within generic code. - Clone
Dyn - A trait to upcast a clonable entity and clone it. It’s implemented for all entities which can be cloned.
- Enum
Count - A trait for capturing the number of variants in Enum. This trait can be autoderived by
strum_macros. - Enum
Message - Associates additional pieces of information with an Enum. This can be
autoimplemented by deriving
EnumMessageand annotating your variants with#[strum(message="...")]. - Enum
Property EnumPropertyis a trait that makes it possible to store additional information with enum variants. This trait is designed to be used with the macro of the same name in thestrum_macroscrate. Currently, the string, integer and bool literals are supported in attributes.- From1
- Trait for converting from one argument.
- From2
- Trait for converting from two arguments.
- From3
- Trait for converting from three arguments.
- Into
Discriminant - A trait for retrieving the enum generated by
EnumDiscriminantsfrom an associated Type on the original enumeration. This trait can be autoderived bystrum_macros. - Into
Enum Iterator - This trait designates that an
Enumcan be iterated over. It can be auto generated using theEnumIterderive macro. - Variant
Array - A trait for retrieving a static array containing all the variants in an Enum.
This trait can be autoderived by
strum_macros. For derived usage, all the variants in the enumerator need to be unit-types, which means you can’t autoderive enums with inner data in one or more variants. Consider using it alongsideEnumDiscriminantsif you require inner data but still want to have an static array of variants. - Variant
Iterator - Variant
Metadata - Variant
Names - A trait for retrieving the names of each variant in Enum. This trait can
be autoderived by
strum_macros.
Functions§
- clone
- True clone which is applicable not only to clonable entities, but to trait objects implementing
CloneDyn. - clone_
into_ box - Clone boxed dyn.
Attribute Macros§
- clone_
dyn - Derive macro for
CloneDyntrait.
Derive Macros§
- Add
- What
#[derive(Add)]generates - AddAssign
- What
#[derive(AddAssign)]generates - AsMut
- Implement
AsMutfor a structure. - AsRef
- Implement
AsReffor a structure. - AsRef
Str - Converts enum variants to
&'a str, where'ais the lifetime of the input enum reference. - Constructor
- What
#[derive(Constructor)]generates - Deref
- Implement
Dereffor a structure. - Deref
Mut - Implement
DerefMutfor a structure. - Display
- Div
- What
#[derive(Mul)]generates - DivAssign
- What
#[derive(MulAssign)]generates - Enum
Count - Add a constant
usizeequal to the number of variants. - Enum
Discriminants - Generate a new type with only the discriminant names.
- EnumIs
- Generated
is_*()methods for each variant. E.g.Color.is_red(). - Enum
Iter - Creates a new type that iterates over the variants of an enum.
- Enum
Message - Add a verbose message to an enum variant.
- Enum
Property - Add custom properties to enum variants.
- Enum
String - Converts strings to enum variants based on their name.
- Enum
TryAs - Generated
try_as_*()methods for all tuple-style variants. E.g.Message.try_as_write(). - Error
- Using
#[derive(Error)] - From
- Implement
Fromfor a structure. - From
Repr - Add a function to enum that allows accessing variants by its discriminant
- FromStr
- Index
- Implement
Indexfor a structure. - Index
Mut - Implement
IndexMutfor a structure. - Inner
From - Implement
InnerFromfor a structure. - Into
- What
#[derive(Into)]generates - Into
Iterator - Using
#[derive(IntoIterator)] - Into
Static Str - Implements
From<MyEnum> for &'static stron an enum. - IsVariant
- What
#[derive(IsVariant)]generates - Mul
- What
#[derive(Mul)]generates - MulAssign
- What
#[derive(MulAssign)]generates - New
- Implement
Newfor a structure. - Not
- Implement
Notfor a structure. - Sub
- What
#[derive(Add)]generates - SubAssign
- What
#[derive(AddAssign)]generates - Sum
- Using
#[derive(Sum)] - TryInto
- What
#[derive(TryInto)]generates - Unwrap
- What
#[derive(Unwrap)]generates - Variadic
From - Implement
VariadicFromfor a structure. - Variant
Array - Adds a
'staticslice with all of the Enum’s variants. - Variant
Names - Implements
Strum::VariantNameswhich adds an associated constantVARIANTSwhich is a'staticslice of discriminant names.