enums/templates/rust.rs (8 lines of code) (raw):

// Code generated; DO NOT EDIT. use num_derive::FromPrimitive; #[derive(Clone, Debug, PartialEq, Eq, FromPrimitive)] pub enum {{ c_name }} { {% for (name, _, _) in names -%} {{ name }} = {{ loop.index0 }}, {% endfor %} } impl From<{{ c_name }}> for &'static str { #[inline(always)] fn from(tok: {{ c_name }}) -> Self { match tok { {% for (name, _, ts_name) in names -%} {{ c_name }}::{{ name }} => "{{ ts_name }}", {% endfor %} } } } impl From<u16> for {{ c_name }} { #[inline(always)] fn from(x: u16) -> Self { num::FromPrimitive::from_u16(x).unwrap_or(Self::Error) } } // {{ c_name }} == u16 impl PartialEq<u16> for {{ c_name }} { #[inline(always)] fn eq(&self, x: &u16) -> bool { *self == Into::<Self>::into(*x) } } // u16 == {{ c_name }} impl PartialEq<{{ c_name }}> for u16 { #[inline(always)] fn eq(&self, x: &{{ c_name }}) -> bool { *x == *self } }