rusmpp_extra/encoding/owned/
fallback.rs1use 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}