The generated enum type looks like this, although I don't really have access to the src as it's generated by Prost! during the build:
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Fruit {
Unspecified = 0,
Apple = 1,
Banana = 2,
Lemon = 3,
...
I can get a &str
from an enum like this:
let apple = Fruit::Apple;
assert_eq!(apple.as_str_name(), "APPLE");
This method is provided by Prost!.
But I want to get the enum from a string.
The strum crate offers a solution except I can't edit the source code file. Maybe there's a hack using include!()
to attach a macro annotation during the build stage.
prost_build
can be configured to attach arbitrary attributes to the generated code viatype_attribute
andfield_attribute
: