pub trait ProtocolEnum: Sized {
type Repr: EnumRepr;
// Required methods
fn discriminant(&self) -> i128;
fn to_repr(&self) -> Option<Self::Repr>;
fn from_repr(repr: Self::Repr) -> Option<Self>;
}Expand description
Maps a fieldless Rust enum to a numeric Minecraft protocol representation.
Implement this trait with ProtocolEnum derive:
use mcproto_types::{ProtocolEnum, TypeCodec, basic::VarInt};
#[derive(Debug, Clone, Copy, PartialEq, Eq, ProtocolEnum)]
#[protocol_enum(repr = VarInt)]
enum GameMode {
Survival = 0,
Creative = 1,
}
let mut encoded = Vec::new();
GameMode::Creative.encode(&mut encoded)?;
assert_eq!(encoded, [0x01]);Required Associated Types§
Required Methods§
Sourcefn discriminant(&self) -> i128
fn discriminant(&self) -> i128
Returns this variant’s numeric discriminant.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".