1 2 3 4 5 6 7 8 9 10 11 12 13 14
use std::error::Error; pub trait PayloadDecoder<E> { fn decode(&mut self, bytes: Vec<u8>) -> Result<E, Box<dyn Error>>; } impl<T, F> PayloadDecoder<T> for F where F: Fn(Vec<u8>) -> Result<T, Box<dyn std::error::Error>>, { fn decode(&mut self, body: Vec<u8>) -> Result<T, Box<dyn std::error::Error>> { (self)(body) } }