Skip to content

Commit

Permalink
improve error messages a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
KodrAus committed Dec 20, 2023
1 parent 059395f commit 82cb86d
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 18 deletions.
64 changes: 64 additions & 0 deletions ref/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,70 @@ impl<V: sval::Value> sval::Value for Ref<V> {
fn stream<'sval, S: Stream<'sval> + ?Sized>(&'sval self, stream: &mut S) -> Result {
self.0.stream(stream)
}

fn tag(&self) -> Option<sval::Tag> {
self.0.tag()
}

fn to_bool(&self) -> Option<bool> {
self.0.to_bool()
}

fn to_f32(&self) -> Option<f32> {
self.0.to_f32()
}

fn to_f64(&self) -> Option<f64> {
self.0.to_f64()
}

fn to_i8(&self) -> Option<i8> {
self.0.to_i8()
}

fn to_i16(&self) -> Option<i16> {
self.0.to_i16()
}

fn to_i32(&self) -> Option<i32> {
self.0.to_i32()
}

fn to_i64(&self) -> Option<i64> {
self.0.to_i64()
}

fn to_i128(&self) -> Option<i128> {
self.0.to_i128()
}

fn to_u8(&self) -> Option<u8> {
self.0.to_u8()
}

fn to_u16(&self) -> Option<u16> {
self.0.to_u16()
}

fn to_u32(&self) -> Option<u32> {
self.0.to_u32()
}

fn to_u64(&self) -> Option<u64> {
self.0.to_u64()
}

fn to_u128(&self) -> Option<u128> {
self.0.to_u128()
}

fn to_text(&self) -> Option<&str> {
self.0.to_text()
}

fn to_binary(&self) -> Option<&[u8]> {
self.0.to_binary()
}
}

impl<'sval, V: sval::Value + ?Sized> ValueRef<'sval> for Ref<&'sval V> {
Expand Down
36 changes: 18 additions & 18 deletions serde/src/to_serialize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ impl<'sval, S: serde::Serializer> Stream<'sval> for Serializer<S> {
_ => {
let name = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing unit label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("unit label must be static"))?;

Ok(self.serializer.serialize_unit_struct(name))
}
Expand All @@ -201,7 +201,7 @@ impl<'sval, S: serde::Serializer> Stream<'sval> for Serializer<S> {
_ => {
let name = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing newtype label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("newtype label must be static"))?;

Ok(self
.serializer
Expand Down Expand Up @@ -236,7 +236,7 @@ impl<'sval, S: serde::Serializer> Stream<'sval> for Serializer<S> {
Some(label) => {
let name = label
.as_static_str()
.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("tuple label must be static"))?;

Ok(SerializeTuple {
serializer: self
Expand All @@ -262,13 +262,13 @@ impl<'sval, S: serde::Serializer> Stream<'sval> for Serializer<S> {
num_entries: Option<usize>,
) -> sval_nested::Result<Self::Record> {
let len =
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple len"))?;
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing struct len"))?;

match label {
Some(label) => {
let name = label
.as_static_str()
.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("struct label must be static"))?;

Ok(SerializeRecord {
serializer: self
Expand All @@ -294,7 +294,7 @@ impl<'sval, S: serde::Serializer> Stream<'sval> for Serializer<S> {
) -> sval_nested::Result<Self::Enum> {
let name = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing enum label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("enum label must be static"))?;

Ok(SerializeEnum {
name,
Expand Down Expand Up @@ -389,7 +389,7 @@ impl<
match self.serializer {
Ok(MaybeNamed::Named { ref mut serializer }) => {
let field = label.as_static_str().ok_or_else(|| {
sval_nested::Error::invalid_value("missing struct field label")
sval_nested::Error::invalid_value("struct field label must be static")
})?;

match serializer.serialize_field(field, &ToSerialize::new(value)) {
Expand Down Expand Up @@ -491,11 +491,11 @@ impl<'sval, S: serde::Serializer> StreamEnum<'sval> for SerializeEnum<S> {
) -> sval_nested::Result<Self::Ok> {
let variant = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing unit label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("unit variant label must be static"))?;

let variant_index = index
.and_then(|index| index.to_u32())
.ok_or_else(|| sval_nested::Error::invalid_value("missing unit index"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("unit variant index must a 32bit value"))?;

Ok(self
.serializer
Expand All @@ -511,11 +511,11 @@ impl<'sval, S: serde::Serializer> StreamEnum<'sval> for SerializeEnum<S> {
) -> sval_nested::Result<Self::Ok> {
let variant = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing newtype label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("newtype variant label must be static"))?;

let variant_index = index
.and_then(|index| index.to_u32())
.ok_or_else(|| sval_nested::Error::invalid_value("missing newtype index"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("newtype variant index must be a 32bit value"))?;

Ok(self.serializer.serialize_newtype_variant(
self.name,
Expand All @@ -534,14 +534,14 @@ impl<'sval, S: serde::Serializer> StreamEnum<'sval> for SerializeEnum<S> {
) -> sval_nested::Result<Self::Tuple> {
let variant = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("tuple variant label must be static"))?;

let variant_index = index
.and_then(|index| index.to_u32())
.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple index"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("tuple variant index must be a 32bit value"))?;

let len =
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple len"))?;
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing tuple variant len"))?;

Ok(SerializeTupleVariant {
serializer: self.serializer.serialize_tuple_variant(
Expand All @@ -562,14 +562,14 @@ impl<'sval, S: serde::Serializer> StreamEnum<'sval> for SerializeEnum<S> {
) -> sval_nested::Result<Self::Record> {
let variant = label
.and_then(|label| label.as_static_str())
.ok_or_else(|| sval_nested::Error::invalid_value("missing struct label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("struct variant label must be static"))?;

let variant_index = index
.and_then(|index| index.to_u32())
.ok_or_else(|| sval_nested::Error::invalid_value("missing struct index"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("struct variant index must be a 32bit value"))?;

let len =
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing struct len"))?;
num_entries.ok_or_else(|| sval_nested::Error::invalid_value("missing struct variant len"))?;

Ok(SerializeRecordVariant {
serializer: self.serializer.serialize_struct_variant(
Expand Down Expand Up @@ -613,7 +613,7 @@ impl<'sval, S: serde::ser::SerializeStructVariant> StreamRecord<'sval>
) -> sval_nested::Result {
let field = label
.as_static_str()
.ok_or_else(|| sval_nested::Error::invalid_value("missing struct field label"))?;
.ok_or_else(|| sval_nested::Error::invalid_value("struct variant field label must be static"))?;

if let Ok(ref mut serializer) = self.serializer {
match serializer.serialize_field(field, &ToSerialize::new(value)) {
Expand Down

0 comments on commit 82cb86d

Please sign in to comment.