cu29_value/
benc.rs

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