rusmpp_extra/encoding/owned/
fallback.rs

1use rusmpp_core::values::DataCoding;
2
3use crate::{
4    encoding::owned::Encoder,
5    fallback::{Fallback, FallbackError},
6};
7
8impl<T, U> Encoder for Fallback<T, U>
9where
10    T: Encoder,
11    U: Encoder,
12{
13    type Error = FallbackError<T::Error, U::Error>;
14
15    fn encode(&self, message: &str) -> Result<(alloc::vec::Vec<u8>, DataCoding), Self::Error> {
16        match self.first.encode(message) {
17            Ok(result) => Ok(result),
18            Err(first_err) => match self.second.encode(message) {
19                Ok(result) => Ok(result),
20                Err(second_err) => Err(FallbackError::new(first_err, second_err)),
21            },
22        }
23    }
24}