Skip to main content

encode_to_vec

Function encode_to_vec 

Source
pub fn encode_to_vec<T: CanonicalEncode + ?Sized>(
    value: &T,
) -> Result<Vec<u8>, CodecError>
Expand description

Encodes a value into an owned byte vector.

Examples found in repository?
examples/protocol_message.rs (line 64)
58fn main() -> Result<(), CodecError> {
59    let message = ProtocolMessage {
60        id: 42,
61        kind: MessageKind::Data(vec![1, 2, 3]),
62    };
63
64    let encoded = encode_to_vec(&message)?;
65    assert_eq!(encoded, [42, 0, 0, 0, 1, 3, 0, 0, 0, 1, 2, 3]);
66    assert_eq!(
67        decode_from_slice_exact::<ProtocolMessage>(&encoded)?,
68        message
69    );
70
71    let err = decode_from_slice_exact::<MessageKind>(&[9]).unwrap_err();
72    assert_eq!(err.kind(), CodecErrorKind::InvalidValue);
73    assert!(err.message().contains("unknown MessageKind tag"));
74
75    Ok(())
76}
More examples
Hide additional examples
examples/basic_encoding.rs (line 7)
5fn main() -> Result<(), CodecError> {
6    let port = 8080u16;
7    let encoded = encode_to_vec(&port)?;
8    assert_eq!(encoded, [0x90, 0x1f]);
9    assert_eq!(decode_from_slice_exact::<u16>(&encoded)?, port);
10
11    let text = "api";
12    let encoded = encode_to_vec(text)?;
13    assert_eq!(encoded, [3, 0, 0, 0, b'a', b'p', b'i']);
14    assert_eq!(decode_from_slice_exact::<String>(&encoded)?, text);
15
16    let (value, remaining) = decode_from_slice::<u8>(&[1, 2])?;
17    assert_eq!(value, 1);
18    assert_eq!(remaining, 1);
19
20    let err = decode_from_slice_exact::<u8>(&[1, 2]).unwrap_err();
21    assert_eq!(err.kind(), CodecErrorKind::TrailingBytes);
22
23    Ok(())
24}