Skip to main content

ProtocolEnum

Trait ProtocolEnum 

Source
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§

Source

type Repr: EnumRepr

The numeric protocol type used for this enum on the wire.

Required Methods§

Source

fn discriminant(&self) -> i128

Returns this variant’s numeric discriminant.

Source

fn to_repr(&self) -> Option<Self::Repr>

Converts this variant to its wire representation.

Returns None when the discriminant does not fit in Self::Repr.

Source

fn from_repr(repr: Self::Repr) -> Option<Self>

Maps a decoded wire representation to a declared enum variant.

Returns None for a value that does not name a declared variant.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl ProtocolEnum for ArmadilloState

Source§

impl ProtocolEnum for AttributeOperation

Source§

impl ProtocolEnum for AttributeSlot

Source§

impl ProtocolEnum for AxolotlVariant

Source§

impl ProtocolEnum for ChatTypeParameter

Source§

impl ProtocolEnum for CopperGolemState

Source§

impl ProtocolEnum for DataComponentType

Source§

impl ProtocolEnum for DebugPathNodeType

Source§

impl ProtocolEnum for DebugSubscriptionType

Source§

impl ProtocolEnum for Direction

Source§

impl ProtocolEnum for DyeColor

Source§

impl ProtocolEnum for EntityBlockIntersectionState

Source§

impl ProtocolEnum for EntityMetadataValueType

Source§

impl ProtocolEnum for EquipmentSlot

Source§

impl ProtocolEnum for FireworkShape

Source§

impl ProtocolEnum for FoxVariant

Source§

impl ProtocolEnum for HorseVariant

Source§

impl ProtocolEnum for HumanoidArm

Source§

impl ProtocolEnum for ItemUseAnimation

Source§

impl ProtocolEnum for LlamaVariant

Source§

impl ProtocolEnum for MapPostProcessing

Source§

impl ProtocolEnum for MooshroomVariant

Source§

impl ProtocolEnum for ParrotVariant

Source§

impl ProtocolEnum for PartialMatcherType

Source§

impl ProtocolEnum for Pose

Source§

impl ProtocolEnum for RabbitVariant

Source§

impl ProtocolEnum for Rarity

Source§

impl ProtocolEnum for SalmonSize

Source§

impl ProtocolEnum for SkinModel

Source§

impl ProtocolEnum for SnifferState

Source§

impl ProtocolEnum for SwingAnimationType

Source§

impl ProtocolEnum for TropicalFishPattern

Source§

impl ProtocolEnum for VillagerProfession

Source§

impl ProtocolEnum for VillagerType

Source§

impl ProtocolEnum for WeatheringCopperState