hermes_encoding_components/impls/
use_strategy.rs1use core::marker::PhantomData;
2
3use cgp::core::Async;
4
5use crate::traits::decode::{CanDecode, Decoder};
6use crate::traits::encode::{CanEncode, Encoder};
7
8pub struct EncodeUsingStrategy<Strategy>(pub PhantomData<Strategy>);
9
10impl<Encoding, Strategy, InStrategy, Value> Encoder<Encoding, Strategy, Value>
11 for EncodeUsingStrategy<InStrategy>
12where
13 Encoding: CanEncode<InStrategy, Value>,
14 InStrategy: Async,
15{
16 fn encode(encoding: &Encoding, value: &Value) -> Result<Encoding::Encoded, Encoding::Error> {
17 <Encoding as CanEncode<InStrategy, Value>>::encode(encoding, value)
18 }
19}
20
21impl<Encoding, Strategy, InStrategy, Value> Decoder<Encoding, Strategy, Value>
22 for EncodeUsingStrategy<InStrategy>
23where
24 Encoding: CanDecode<InStrategy, Value>,
25 InStrategy: Async,
26{
27 fn decode(encoding: &Encoding, value: &Encoding::Encoded) -> Result<Value, Encoding::Error> {
28 <Encoding as CanDecode<InStrategy, Value>>::decode(encoding, value)
29 }
30}