Expand description
§quick-impl
quick-impl is a Rust procedural macro that simplifies working with enums and structures by generating common methods and traits for each variant/field. This helps reduce boilerplate code and enhances the ergonomics of using enums and structures in your Rust projects.
§Features
§Enums methods
as_ref- Returns an immutable reference to the associated data of the enum variant.as_ref_mut- Returns a mutable reference to the associated data of the enum variant.from- Creates an instance of the enum variant from the associated data.into- Converts the enum into the variant associated data, returning anOption.is- Checks if the enum variant matches a specified variant.try_into- Converts the enum into the variant associated data, returning aResult.
§Enums traits
Default- Implements theDefaulttrait.From- Implements theFromtrait.TryInto- Implements theTryIntotrait.
§Structures methods
get- A getter for the field. Returns a reference to the field.get_clone- A getter for the field. Returns a clone of the field.get_mut- A mutable getter for the field.into- Converts the structure into the field.set- A setter for the field.take- Returns the field and replaces it with its default value.with- Returns the sutrcture with the field modified.
§Structures traits
AsRef- Implements theAsReftrait.AsMut- Implements theAsMuttrait.Deref- Implements theDereftrait.DerefMut- Implements theDerefMuttrait.Into- Implements theIntotrait.
§Usage
Add quick-impl to your Cargo.toml:
[dependencies]
quick-impl = "0.1"In your Rust code:
use quick_impl::QuickImpl;
#[derive(QuickImpl)]
enum YourEnum {
#[quick_impl(pub const is)]
Variant1,
#[quick_impl(pub as_ref, pub(crate) as_ref_mut, impl From)]
Variant2(i32),
// ... add attributes to other variants as needed
}
fn main() {
let instance = YourEnum::Variant1;
// Use generated methods on enum instances
assert!(instance.is_variant1());
let variant2_instance = YourEnum::from(42);
assert_eq!(*variant2_instance.as_variant2().unwrap(), 42);
}More examples can be found in examples.