diff options
Diffstat (limited to 'common/object/src/value.rs')
| -rw-r--r-- | common/object/src/value.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/common/object/src/value.rs b/common/object/src/value.rs index 8371a79..9b9a438 100644 --- a/common/object/src/value.rs +++ b/common/object/src/value.rs @@ -8,7 +8,7 @@ use crate::{Object, ObjectBuffer, Tag}; use std::{borrow::Cow, fmt::Display, str::FromStr}; pub trait ValueLoad<'a>: ValueStore + Sized { - const ALIGNED: bool; + const TYPE: ValueType; fn load_aligned(buf: &'a [u32]) -> Option<Self> { let _ = buf; unimplemented!() @@ -33,7 +33,7 @@ pub enum ValueType { impl ValueType { #[inline] - pub fn is_aligned(self) -> bool { + pub const fn is_aligned(self) -> bool { match self { ValueType::Binary | ValueType::String => false, _ => true, @@ -133,7 +133,7 @@ pub trait ValueStore { fn size(&self) -> usize; } impl<'a> ValueLoad<'a> for &'a str { - const ALIGNED: bool = false; + const TYPE: ValueType = ValueType::String; fn load_unaligned(buf: &'a [u8]) -> Option<Self> { str::from_utf8(buf).ok() } @@ -150,7 +150,7 @@ impl ValueStore for &str { } } impl ValueLoad<'_> for u32 { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::UInt; fn load_aligned(buf: &[u32]) -> Option<Self> { buf.get(0).copied().map(u32::from_be) } @@ -167,7 +167,7 @@ impl ValueStore for u32 { } } impl ValueLoad<'_> for Tag { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::Tag; fn load_aligned(buf: &[u32]) -> Option<Self> { buf.get(0).copied().map(u32::from_be).map(Tag) } @@ -184,7 +184,7 @@ impl ValueStore for Tag { } } impl ValueLoad<'_> for u64 { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::UInt; fn load_aligned(buf: &[u32]) -> Option<Self> { let hi = u32::from_be(*buf.get(0)?) as u64; let lo = u32::from_be(*buf.get(1)?) as u64; @@ -204,7 +204,7 @@ impl ValueStore for u64 { } } impl ValueLoad<'_> for f64 { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::Float; fn load_aligned(buf: &[u32]) -> Option<Self> { if buf.len() < 2 { return None; @@ -230,7 +230,7 @@ impl ValueStore for f64 { } } impl ValueLoad<'_> for i64 { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::Int; fn load_aligned(buf: &[u32]) -> Option<Self> { u64::load_aligned(buf).map(|x| x as i64) } @@ -247,7 +247,7 @@ impl ValueStore for i64 { } } impl<'a> ValueLoad<'a> for Object<'a> { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::Object; fn load_aligned(buf: &'a [u32]) -> Option<Self> { Self::load(buf) } @@ -278,7 +278,7 @@ impl ValueStore for ObjectBuffer { } } impl<'a> ValueLoad<'a> for &'a [u8] { - const ALIGNED: bool = false; + const TYPE: ValueType = ValueType::Binary; fn load_unaligned(buf: &'a [u8]) -> Option<Self> { Some(buf) } @@ -295,7 +295,7 @@ impl ValueStore for &[u8] { } } impl<'a> ValueLoad<'a> for () { - const ALIGNED: bool = true; + const TYPE: ValueType = ValueType::Int; fn load_aligned(_buf: &'a [u32]) -> Option<Self> { Some(()) } |