$ enum-as-inner

v0.7.0MAJOR UPDATE

A proc-macro for deriving inner field accessor functions on enums.

Downloads: 90.7M
Recent: 11.5M
Versions: 15
Updated: February 2, 2026

Latest Update Summary

Crate

Name: enum-as-inner New version: 0.7.0 Release date: 2026-02-02T05:05:11.471053Z

Crate readme

Short description A deriving proc-macro for generating functions to automatically give access to the inner members of enum.

Long description The crate provides a proc-macro that allows users to derive access functions for the inner fields of enums. It supports single item enums, multiple unnamed fields, and named fields, with corresponding accessor methods, including unsafe variants for unchecked access.

Features • Derives access functions for inner members of enums • Supports both unnamed and named fields • Provides unsafe methods for direct access

Code Examples Basic unnamed field case

 use enum_as_inner::EnumAsInner;

#[derive(Debug, EnumAsInner)]
enum OneEnum {
    One(u32),
}

let one = OneEnum::One(1);

assert_eq!(*one.as_one().unwrap(), 1);
assert_eq!(one.into_one().unwrap(), 1);

Multiple, unnamed field case

 use enum_as_inner::EnumAsInner;

#[derive(Debug, EnumAsInner)]
enum ManyVariants {
    One(u32),
    Two(u32, i32),
    Three(bool, u32, i64),
}

let mut many = ManyVariants::Three(true, 1, 2);

assert_eq!(many.as_three().unwrap(), (&true, &1_u32, &2_i64));

Multiple, named field case

 use enum_as_inner::EnumAsInner;

#[derive(Debug, EnumAsInner)]
enum ManyVariants {
    One{ one: u32 },
    Two{ one: u32, two: i32 },
    Three{ one: bool, two: u32, three: i64 },
}

let mut many = ManyVariants::Three{ one: true, two: 1, three: 2 };

assert_eq!(many.as_three().unwrap(), (&true, &1_u32, &2_i64));

Links

https://docs.rs/enum-as-inner

Release info

Release version: N/A

Release description N/A

Code Examples N/A

Minor update: 0.6.1 → 0.7.0

$ DOWNLOADS TREND

75.8M90.7M

$ VERSION HISTORY

v0.7.0February 2, 2026
v0.6.1September 9, 2024

$ LINKS

$ INSTALL

cargo add enum-as-inner

Or add to Cargo.toml: enum-as-inner = "0.7.0"