wry_bindgen/encode/
clamped.rs1use alloc::vec::Vec;
4
5use crate::Clamped;
6use crate::ipc::{DecodeError, DecodedData, EncodedData};
7
8use super::{BatchableResult, BinaryDecode, BinaryEncode, EncodeTypeDef, TypeTag};
9
10impl EncodeTypeDef for Clamped<Vec<u8>> {
13 fn encode_type_def(buf: &mut Vec<u8>) {
14 buf.push(TypeTag::U8Clamped as u8);
15 }
16}
17
18impl EncodeTypeDef for Clamped<&[u8]> {
19 fn encode_type_def(buf: &mut Vec<u8>) {
20 buf.push(TypeTag::U8Clamped as u8);
21 }
22}
23
24impl EncodeTypeDef for Clamped<&mut [u8]> {
25 fn encode_type_def(buf: &mut Vec<u8>) {
26 buf.push(TypeTag::U8Clamped as u8);
27 }
28}
29
30impl BinaryEncode for Clamped<Vec<u8>> {
31 fn encode(self, encoder: &mut EncodedData) {
32 encoder.push_u32(self.0.len() as u32);
33 for val in self.0 {
34 encoder.push_u8(val);
35 }
36 }
37}
38
39impl BinaryEncode for Clamped<&[u8]> {
40 fn encode(self, encoder: &mut EncodedData) {
41 encoder.push_u32(self.0.len() as u32);
42 for &val in self.0 {
43 encoder.push_u8(val);
44 }
45 }
46}
47
48impl BinaryEncode for Clamped<&mut [u8]> {
49 fn encode(self, encoder: &mut EncodedData) {
50 encoder.push_u32(self.0.len() as u32);
51 for &mut val in self.0 {
52 encoder.push_u8(val);
53 }
54 }
55}
56
57impl BinaryDecode for Clamped<Vec<u8>> {
58 fn decode(decoder: &mut DecodedData) -> Result<Self, DecodeError> {
59 let len = decoder.take_u32()? as usize;
60 let mut vec = Vec::with_capacity(len);
61 for _ in 0..len {
62 vec.push(decoder.take_u8()?);
63 }
64 Ok(Clamped(vec))
65 }
66}
67
68impl BatchableResult for Clamped<Vec<u8>> {}