1use crate::reflect::EnumDescriptor;
2use crate::reflect::EnumValueDescriptor;
3
4pub trait ProtobufEnum: Eq + Sized + Copy + 'static {
6 fn value(&self) -> i32;
8
9 fn from_i32(v: i32) -> Option<Self>;
12
13 fn values() -> &'static [Self] {
15 panic!();
16 }
17
18 fn descriptor(&self) -> &'static EnumValueDescriptor {
20 self.enum_descriptor().value_by_number(self.value())
21 }
22
23 fn enum_descriptor(&self) -> &'static EnumDescriptor {
25 Self::enum_descriptor_static()
26 }
27
28 fn enum_descriptor_static() -> &'static EnumDescriptor {
30 panic!();
31 }
32}