blob: 1c2a62ea1b3aedbe6ae0aff63b269c822243fe88 [file] [log] [blame]
use reflect::EnumDescriptor;
use reflect::EnumValueDescriptor;
/// Trait implemented by all protobuf enum types.
pub trait ProtobufEnum: Eq + Sized + Copy + 'static {
/// Get enum `i32` value.
fn value(&self) -> i32;
/// Try to create an enum from `i32` value.
/// Return `None` if value is unknown.
fn from_i32(v: i32) -> Option<Self>;
/// Get all enum values for enum type.
fn values() -> &'static [Self] {
panic!();
}
/// Get enum value descriptor.
fn descriptor(&self) -> &'static EnumValueDescriptor {
self.enum_descriptor().value_by_number(self.value())
}
/// Get enum descriptor.
fn enum_descriptor(&self) -> &'static EnumDescriptor {
Self::enum_descriptor_static()
}
/// Get enum descriptor by type.
fn enum_descriptor_static() -> &'static EnumDescriptor {
panic!();
}
}