4 releases
0.0.4 | Jul 25, 2023 |
---|---|
0.0.3 | Apr 2, 2023 |
0.0.2 | Dec 19, 2021 |
0.0.1 | Dec 19, 2021 |
#509 in Procedural macros
11KB
242 lines
Convert by name
Procedural macros to derive core::convert::From
and core::convert::Into
implementations based on field/variant names.
The crate supports struct
s and enum
s only. union
s are not supported.
Examples
#[derive(PartialEq, Debug)]
struct Point2D {
x: i32,
y: i32,
}
#[derive(PartialEq, Debug, ConvertByName)]
#[from(Point2D)]
#[into(Point2D)]
struct Vec2D {
x: i32,
y: i32,
}
let point = Point2D { x: 3, y: 4 };
let vector: Vec2D = point.into();
assert_eq!(vector, Vec2D { x: 3, y: 4 });
let point2: Point2D = vector.into();
assert_eq!(point2, Point2D { x: 3, y: 4 });
lib.rs
:
Procedural macro to derive core::convert::From
and core::convert::Into
implementations based on field/variant names.
Dependencies
~275–740KB
~18K SLoC