hermes_encoding_components/impls/
use_strategy.rs

1use 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}