mod array;
mod bitlist;
mod bitvector;
mod boolean;
mod container;
mod de;
mod list;
mod merkleization;
mod root;
mod ser;
mod uint;
mod union;
mod vector;
pub use bitlist::Bitlist;
pub use bitvector::Bitvector;
pub use de::{Deserialize, DeserializeError};
pub use list::List;
pub use merkleization::{Context as MerkleizationContext, MerkleizationError, Merkleized, Root};
pub use ser::{Serialize, SerializeError};
pub use uint::U256;
pub use vector::Vector;
pub trait Sized {
fn is_variable_size() -> bool;
fn size_hint() -> usize;
}
pub trait SimpleSerialize: Serialize + Deserialize + Sized + Merkleized + Default {
fn is_composite_type() -> bool {
true
}
}
pub fn serialize<T>(value: &T) -> Result<Vec<u8>, SerializeError>
where
T: SimpleSerialize,
{
let mut result = vec![];
value.serialize(&mut result)?;
Ok(result)
}
pub fn deserialize<T>(encoding: &[u8]) -> Result<T, DeserializeError>
where
T: SimpleSerialize,
{
T::deserialize(encoding)
}
pub mod prelude {
use thiserror::Error;
#[derive(Debug, Error)]
#[error("{0}")]
pub enum SimpleSerializeError {
Serialize(#[from] SerializeError),
Deserialize(#[from] DeserializeError),
Merkleization(#[from] MerkleizationError),
}
pub use crate as ssz_rs;
pub use crate::bitlist::Bitlist;
pub use crate::bitvector::Bitvector;
pub use crate::de::Deserialize;
pub use crate::de::DeserializeError;
pub use crate::list::List;
pub use crate::merkleization::{
merkleize, mix_in_selector, pack, pack_bytes, MerkleizationError, Merkleized, Root,
};
pub use crate::ser::{Serialize, SerializeError};
pub use crate::uint::U256;
pub use crate::vector::Vector;
pub use crate::MerkleizationContext;
pub use crate::SimpleSerialize;
pub use crate::Sized;
pub use crate::{deserialize, serialize};
pub use ssz_rs_derive::SimpleSerialize;
}
pub mod internal {
pub use crate::merkleization::{merkleize, mix_in_selector};
pub use crate::ser::serialize_composite_from_components;
}