multiversx_sc_codec/multi/
top_en_multi_output.rs

1use 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    /// This is temporary, will remove after we get rid of SCResult for good.
12    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}