1 unstable release
0.1.0 | Jul 1, 2024 |
---|
#1414 in Rust patterns
238 downloads per month
Used in 2 crates
(via ostd)
5KB
TryFromInt - A convenient derive macro for converting an integer to an enum
Quick Start
To use this crate, first add this crate to your Cargo.toml
.
[dependencies]
int-to-c-enum = "0.1.0"
You can use this macro for a C-like enum.
use int_to_c_enum::TryFromInt;
#[repr(u8)]
#[derive(TryFromInt, Debug)]
pub enum Color {
Red = 1,
Blue = 2,
Green = 3,
}
Then, you can use try_from
function for this enum.
fn main() {
let color = Color::try_from(1).unwrap();
println!("color = {color:?}"); // color = Red;
}
Introduction
This crate provides a derive procedural macro named TryFromInt
. This macro will automatically implement TryFrom trait for enums that meet the following requirements:
- The enum must have a primitive repr, i.e., the enum should have attribute like #[repr(u8)], #[repr(u32)], etc. The type parameter of TryFrom will be the repr, e.g., in the
QuickStart
example, the macro will implmentTryFrom<u8>
forColor
. - The enum must consist solely of unit variants, which is called units only enum. Each field should have an explicit discriminant.
Dependencies
~105KB