# derive(TryFrom, From) This library provides convenient derive macros for the standard library's [`std::convert::TryFrom`](https://doc.rust-lang.org/std/convert/trait.TryFrom.html) and [`std::convert::From`](https://doc.rust-lang.org/std/convert/trait.From.html) traits. ## Example ```toml [dependencies] try-from-discrim = "1.0" ``` and then: ```rust #[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](https://docs.rs/try-from-discrim) 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.