aboutsummaryrefslogtreecommitdiff
path: root/common/object/src/value.rs
diff options
context:
space:
mode:
Diffstat (limited to 'common/object/src/value.rs')
-rw-r--r--common/object/src/value.rs22
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(())
}