multiversx_sc_codec/impl_for_types/
impl_ref.rs

1use crate::{
2    DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode,
3    NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput,
4};
5use alloc::boxed::Box;
6
7impl<T: TopEncode> TopEncode for &T {
8    #[inline]
9    fn top_encode_or_handle_err<O, H>(&self, output: O, h: H) -> Result<(), H::HandledErr>
10    where
11        O: TopEncodeOutput,
12        H: EncodeErrorHandler,
13    {
14        (*self).top_encode_or_handle_err(output, h)
15    }
16}
17
18impl<T: TopEncode> TopEncode for Box<T> {
19    #[inline]
20    fn top_encode_or_handle_err<O, H>(&self, output: O, h: H) -> Result<(), H::HandledErr>
21    where
22        O: TopEncodeOutput,
23        H: EncodeErrorHandler,
24    {
25        self.as_ref().top_encode_or_handle_err(output, h)
26    }
27}
28
29impl<T: TopDecode> TopDecode for Box<T> {
30    fn top_decode_or_handle_err<I, H>(input: I, h: H) -> Result<Self, H::HandledErr>
31    where
32        I: TopDecodeInput,
33        H: DecodeErrorHandler,
34    {
35        T::top_decode_boxed_or_handle_err(input, h)
36    }
37}
38
39impl<T: NestedEncode> NestedEncode for &T {
40    #[inline]
41    fn dep_encode_or_handle_err<O, H>(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr>
42    where
43        O: NestedEncodeOutput,
44        H: EncodeErrorHandler,
45    {
46        (*self).dep_encode_or_handle_err(dest, h)
47    }
48}
49
50impl<T: NestedEncode> NestedEncode for Box<T> {
51    fn dep_encode_or_handle_err<O, H>(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr>
52    where
53        O: NestedEncodeOutput,
54        H: EncodeErrorHandler,
55    {
56        self.as_ref().dep_encode_or_handle_err(dest, h)
57    }
58}
59
60impl<T: NestedDecode> NestedDecode for Box<T> {
61    fn dep_decode_or_handle_err<I, H>(input: &mut I, h: H) -> Result<Self, H::HandledErr>
62    where
63        I: NestedDecodeInput,
64        H: DecodeErrorHandler,
65    {
66        Ok(Box::new(T::dep_decode_or_handle_err(input, h)?))
67    }
68}