1 stable release
1.0.0 | Sep 29, 2022 |
---|
#20 in #discriminant
38 downloads per month
Used in 3 crates
(via gb-cpu-sim)
22KB
263 lines
derive(TryFrom, From)
This library provides convenient derive macros for the standard library's std::convert::TryFrom
and std::convert::From
traits.
Example
[dependencies]
try-from-discrim = "1.0"
and then:
#[macro_use] extern crate try_from_discrim;
#[derive(TryFrom)]
#[from(u8)]
enum RegisterIndex {
B = 0,
C = 1,
D = 2,
E = 3,
H = 4,
L = 5,
HlInd = 6,
A = 7,
}
(You do not need the extern crate
line with Rust 2018 or later.)
The discriminants can be omitted, too! Check the documentation for more information.
Details
- This crate intentionally stays out of your public API.
The provided implementations are identical to as if you had written them by hand, thus switching from handwritten
impl
s to this crate or vice-versa is not a breaking change. - Using the standard library conversion traits enables working with more code than deriving a custom trait instead.
- Non-exhaustive enums can still implement
From
using a fallback variant.
The generated implementations are compatible with a #[no_std]
environment.
License
This crate is licensed under the Mozilla Public License 2.0, see the LICENSE file.
Dependencies
~1.5MB
~37K SLoC