Expand description
Derive implementations for common traits.
- Crate
::derive_more. - docs.rs
- crates.io
- GitHub
derive_more extends Rust’s derive macro system to automatically implement
commonly-used traits for custom types.
When wrapping types inside custom structs or enums,
the implementations of built-in traits like Add, Display, and From are lost.
derive_more provides derives that restore these implementations with minimal boilerplate,
making the newtype pattern ergonomic.
The crate provides derives across several categories:
conversion traits (From, Into, TryFrom, IntoIterator),
formatting traits (Display and related),
operator overloading (Add, Mul, Deref),
and enum utilities that generate helper methods like is_variant().
Key features include automatic operator implementations for wrapper types,
flexible Display formatting with format strings,
and comprehensive support for both structs and enums.
§Examples
Deriving arithmetic operators for a newtype:
use derive_more::{Add, From};
#[derive(Add, From, Debug, PartialEq)]
struct MyInt(i32);
let a = MyInt(10);
let b = MyInt(20);
let result = a + b;
assert_eq!(result, MyInt(30));Deriving Display with custom formatting:
use derive_more::Display;
#[derive(Display, Debug)]
#[display("Point({x}, {y})")]
struct Point {
x: i32,
y: i32,
}
let p = Point { x: 10, y: 20 };
assert_eq!(format!("{}", p), "Point(10, 20)");Modules§
- core
- The Rust Core Library
- derive
- Module containing derive definitions only, without their corresponding traits.
- with_
trait - Module containing derive definitions with their corresponding traits along.
Structs§
- From
StrError - Error of parsing an enum value its string representation.
- TryFrom
Repr Error - Error returned by the derived
TryFromimplementation on enums to convert from their repr. - TryInto
Error - Error returned by the derived
TryIntoimplementation. - TryUnwrap
Error - Error returned by the derived
TryUnwrapimplementation. - Unit
Error - Error returned by the derived implementations when an arithmetic or logic operation is invoked on a unit-like variant of an enum.
- Wrong
Variant Error - Error returned by the derived implementations when an arithmetic or logic operation is invoked on mismatched enum variants.
Enums§
- Binary
Error - Possible errors returned by the derived implementations of binary arithmetic or logic operations.
Derive Macros§
- Add
- What
#[derive(Add)]generates - AddAssign
- What
#[derive(AddAssign)]generates - AsMut
- What
#[derive(AsRef)]generates - AsRef
- What
#[derive(AsRef)]generates - Binary
- What
#[derive(Display)]generates - BitAnd
- What
#[derive(Add)]generates - BitAnd
Assign - What
#[derive(AddAssign)]generates - BitOr
- What
#[derive(Add)]generates - BitOr
Assign - What
#[derive(AddAssign)]generates - BitXor
- What
#[derive(Add)]generates - BitXor
Assign - What
#[derive(AddAssign)]generates - Constructor
- What
#[derive(Constructor)]generates - Debug
- What
#[derive(Debug)]generates - Deref
- Using
#[derive(Deref)] - Deref
Mut - What
#[derive(DerefMut)]generates - Display
- What
#[derive(Display)]generates - Div
- What
#[derive(Mul)]generates - DivAssign
- What
#[derive(MulAssign)]generates - Error
- Using
#[derive(Error)] - From
- What
#[derive(From)]generates - FromStr
- What
#[derive(FromStr)]generates - Index
- What
#[derive(Index)]generates - Index
Mut - What
#[derive(IndexMut)]generates - Into
- What
#[derive(Into)]generates - Into
Iterator - Using
#[derive(IntoIterator)] - IsVariant
- What
#[derive(IsVariant)]generates - Lower
Exp - What
#[derive(Display)]generates - Lower
Hex - What
#[derive(Display)]generates - Mul
- What
#[derive(Mul)]generates - MulAssign
- What
#[derive(MulAssign)]generates - Neg
- What
#[derive(Not)]generates - Not
- What
#[derive(Not)]generates - Octal
- What
#[derive(Display)]generates - Pointer
- What
#[derive(Display)]generates - Product
- Using
#[derive(Sum)] - Rem
- What
#[derive(Mul)]generates - RemAssign
- What
#[derive(MulAssign)]generates - Shl
- What
#[derive(Mul)]generates - ShlAssign
- What
#[derive(MulAssign)]generates - Shr
- What
#[derive(Mul)]generates - ShrAssign
- What
#[derive(MulAssign)]generates - Sub
- What
#[derive(Add)]generates - SubAssign
- What
#[derive(AddAssign)]generates - Sum
- Using
#[derive(Sum)] - TryFrom
- What
#[derive(TryFrom)]generates - TryInto
- What
#[derive(TryInto)]generates - TryUnwrap
- What
#[derive(TryUnwrap)]generates - Unwrap
- What
#[derive(Unwrap)]generates - Upper
Exp - What
#[derive(Display)]generates - Upper
Hex - What
#[derive(Display)]generates