Skip to content

asterinas/int-to-c-enum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

  1. 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 implement TryFrom<u8> for Color.
  2. The enum must consist solely of unit variants, which is called units only enum. Each field should have an explicit discriminant.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages