// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2024-present, fjall-rs
// Copyright (c) 2026-present, Structured World Foundation
use crate::io::{Read, Write};
#[cfg(not(feature = "std"))]
use alloc::vec::Vec;
/// Trait to serialize stuff
pub trait Encode {
/// Serializes into writer.
fn encode_into<W: Write>(&self, writer: &mut W) -> Result<(), crate::Error>;
/// Serializes into vector.
fn encode_into_vec(&self) -> Vec<u8> {
let mut v = vec![];
#[expect(
clippy::expect_used,
reason = "encoding into a vec is not expected to fail"
)]
self.encode_into(&mut v).expect("cannot fail");
v
}
}
/// Trait to deserialize stuff
pub trait Decode {
/// Deserializes from reader.
fn decode_from<R: Read>(reader: &mut R) -> Result<Self, crate::Error>
where
Self: Sized;
}