multiversx_sc_codec/multi/
top_en_multi_output.rs1use alloc::vec::Vec;
2
3use crate::{EncodeError, EncodeErrorHandler, TopEncode, TryStaticCast};
4
5pub trait TopEncodeMultiOutput {
6 fn push_single_value<T, H>(&mut self, arg: &T, h: H) -> Result<(), H::HandledErr>
7 where
8 T: TopEncode,
9 H: EncodeErrorHandler;
10
11 fn push_multi_specialized<T, H>(&mut self, _arg: &T, h: H) -> Result<(), H::HandledErr>
13 where
14 T: TryStaticCast,
15 H: EncodeErrorHandler,
16 {
17 Err(h.handle_error(EncodeError::UNSUPPORTED_OPERATION))
18 }
19}
20
21impl TopEncodeMultiOutput for Vec<Vec<u8>> {
22 fn push_single_value<T, H>(&mut self, arg: &T, h: H) -> Result<(), H::HandledErr>
23 where
24 T: TopEncode,
25 H: EncodeErrorHandler,
26 {
27 let mut result = Vec::new();
28 arg.top_encode_or_handle_err(&mut result, h)?;
29 self.push(result);
30 Ok(())
31 }
32}