From 75e62c913640f4e324912309a05de686cd1d4f7f Mon Sep 17 00:00:00 2001 From: mat Date: Wed, 22 Mar 2023 17:58:37 +0000 Subject: use enum-as-inner in nbt --- azalea-nbt/src/tag.rs | 123 +------------------------------------------------- 1 file changed, 2 insertions(+), 121 deletions(-) (limited to 'azalea-nbt/src') diff --git a/azalea-nbt/src/tag.rs b/azalea-nbt/src/tag.rs index 4d1e08b8..4661479b 100755 --- a/azalea-nbt/src/tag.rs +++ b/azalea-nbt/src/tag.rs @@ -1,11 +1,12 @@ use ahash::AHashMap; use compact_str::CompactString; +use enum_as_inner::EnumAsInner; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; /// An NBT value. -#[derive(Clone, Debug, PartialEq, Default)] +#[derive(Clone, Debug, PartialEq, Default, EnumAsInner)] #[repr(u8)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(untagged))] pub enum Tag { @@ -35,124 +36,4 @@ impl Tag { // without offsetting the pointer. unsafe { *<*const _>::from(self).cast::() } } - - /// If the type is a byte, return the [`i8`]. - #[inline] - pub fn as_byte(&self) -> Option<&i8> { - if let Tag::Byte(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a short, return the [`i16`]. - #[inline] - pub fn as_short(&self) -> Option<&i16> { - if let Tag::Short(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is an int, return the [`i32`]. - #[inline] - pub fn as_int(&self) -> Option<&i32> { - if let Tag::Int(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a long, return the [`i64`]. - #[inline] - pub fn as_long(&self) -> Option<&i64> { - if let Tag::Long(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a float, return the [`f32`]. - #[inline] - pub fn as_float(&self) -> Option<&f32> { - if let Tag::Float(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a double, return the [`f64`]. - #[inline] - pub fn as_double(&self) -> Option<&f64> { - if let Tag::Double(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a string, return the [`str`]. - #[inline] - pub fn as_string(&self) -> Option<&str> { - if let Tag::String(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a compound, return the `AHashMap`. - #[inline] - pub fn as_compound(&self) -> Option<&AHashMap> { - if let Tag::Compound(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a bytearray, return the `[u8]`. - #[inline] - pub fn as_bytearray(&self) -> Option<&[u8]> { - if let Tag::ByteArray(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is an intarray, return the `Vec`. - #[inline] - pub fn as_intarray(&self) -> Option<&Vec> { - if let Tag::IntArray(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a longarray, return the `Vec`. - #[inline] - pub fn as_longarray(&self) -> Option<&Vec> { - if let Tag::LongArray(v) = self { - Some(v) - } else { - None - } - } - - /// If the type is a list, return the `[Tag]`. - #[inline] - pub fn as_list(&self) -> Option<&[Tag]> { - if let Tag::List(v) = self { - Some(v) - } else { - None - } - } } -- cgit v1.2.3