gmsol_decode/decode/mod.rs
1use crate::{decoder::Decoder, error::DecodeError};
2
3/// Visitor.
4pub mod visitor;
5
6/// Type that can be decoded by a [`Decoder`].
7pub trait Decode: Send + Sync + Sized {
8 /// Decode with the given [`Decoder`].
9 fn decode<D: Decoder>(decoder: D) -> Result<Self, DecodeError>;
10}
11
12impl<T: Decode> Decode for Box<T> {
13 fn decode<D: Decoder>(decoder: D) -> Result<Self, DecodeError> {
14 let decoded = T::decode(decoder)?;
15 Ok(Box::new(decoded))
16 }
17}