cu29_value/
benc.rs

1use crate::Value;
2
3use bincode::enc::Encode;
4use bincode::enc::Encoder;
5use bincode::error::EncodeError;
6
7#[cfg(not(feature = "std"))]
8use alloc::borrow::ToOwned;
9
10impl Encode for Value {
11    fn encode<E: Encoder>(&self, encoder: &mut E) -> Result<(), EncodeError> {
12        let discriminant = self.discriminant() as u8;
13        discriminant.encode(encoder)?;
14        match self {
15            Value::U8(v) => v.to_owned().encode(encoder),
16            Value::U16(v) => v.to_owned().encode(encoder),
17            Value::U32(v) => v.to_owned().encode(encoder),
18            Value::U64(v) => v.to_owned().encode(encoder),
19            Value::I8(v) => v.to_owned().encode(encoder),
20            Value::I16(v) => v.to_owned().encode(encoder),
21            Value::I32(v) => v.to_owned().encode(encoder),
22            Value::I64(v) => v.to_owned().encode(encoder),
23            Value::F32(v) => v.to_owned().encode(encoder),
24            Value::F64(v) => v.to_owned().encode(encoder),
25            Value::Bool(v) => v.to_owned().encode(encoder),
26            Value::Char(v) => v.to_owned().encode(encoder),
27            Value::String(v) => v.to_owned().encode(encoder),
28            Value::Bytes(v) => v.to_owned().encode(encoder),
29            Value::Unit => ().encode(encoder),
30            Value::Seq(v) => v.to_owned().encode(encoder),
31            Value::Map(v) => v.to_owned().encode(encoder),
32            Value::Option(v) => v.to_owned().encode(encoder),
33            Value::CuTime(v) => v.to_owned().encode(encoder),
34            Value::Newtype(v) => v.to_owned().encode(encoder),
35        }
36    }
37}