multiversx_sc_codec/impl_for_types/
impl_ref.rs1use 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}