Skip to content

Commit 690c280

Browse files
authored
impl Deserialize for Packed + SumTag (#4653)
# Description of Changes See tin. Extracted from #4311. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing Trivial additions.
1 parent 7cd72b8 commit 690c280

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

crates/sats/src/algebraic_value.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pub mod de;
22
pub mod ser;
33

4-
use crate::{AlgebraicType, ArrayValue, ProductValue, SumValue};
4+
use crate::{impl_deserialize, AlgebraicType, ArrayValue, Deserialize, ProductValue, SumValue};
55
use core::mem;
66
use core::ops::{Bound, RangeBounds};
77
use derive_more::From;
@@ -117,6 +117,8 @@ pub enum AlgebraicValue {
117117
#[repr(Rust, packed)]
118118
pub struct Packed<T>(pub T);
119119

120+
impl_deserialize!([T: Deserialize<'de>] Packed<T>, de => <_>::deserialize(de).map(Packed));
121+
120122
impl<T> From<T> for Packed<T> {
121123
fn from(value: T) -> Self {
122124
Self(value)

crates/sats/src/sum_value.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::algebraic_value::AlgebraicValue;
2+
use crate::impl_deserialize;
23
use crate::sum_type::SumType;
34

45
/// A value of a sum type choosing a specific variant of the type.
@@ -34,6 +35,8 @@ impl SumValue {
3435
#[repr(transparent)]
3536
pub struct SumTag(pub u8);
3637

38+
impl_deserialize!([] SumTag, de => <_>::deserialize(de).map(SumTag));
39+
3740
#[cfg(feature = "memory-usage")]
3841
impl spacetimedb_memory_usage::MemoryUsage for SumTag {}
3942

0 commit comments

Comments
 (0)