#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(not(feature = "std"))]
extern crate alloc;
mod array;
mod bitlist;
mod bitvector;
mod boolean;
mod container;
mod de;
mod error;
mod list;
mod merkleization;
mod ser;
#[cfg(feature = "serde")]
mod serde;
mod uint;
mod union;
mod utils;
mod vector;
mod lib {
mod core {
#[cfg(not(feature = "std"))]
pub use core::*;
#[cfg(feature = "std")]
pub use std::*;
}
pub use self::core::{any, cmp, fmt, iter, slice};
pub use self::{
cmp::Ordering,
core::{
array::TryFromSliceError,
fmt::{Debug, Display, Formatter},
ops::{Deref, DerefMut, Index, IndexMut},
slice::{IterMut, SliceIndex},
},
iter::Enumerate,
};
#[cfg(not(feature = "std"))]
pub use alloc::{format, string::String, vec, vec::Vec};
#[cfg(feature = "std")]
pub use std::vec::Vec;
#[cfg(feature = "serde")]
pub use self::core::marker::PhantomData;
}
pub(crate) const BITS_PER_BYTE: u32 = 8;
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
}
}
mod exports {
pub use crate::{
bitlist::Bitlist,
bitvector::Bitvector,
de::{Deserialize, DeserializeError},
error::{Error as SimpleSerializeError, InstanceError, TypeError},
list::List,
merkleization::{is_valid_merkle_branch, MerkleizationError, Merkleized, Node},
ser::{Serialize, SerializeError},
uint::U256,
utils::{deserialize, serialize},
vector::Vector,
SimpleSerialize, Sized,
};
}
pub use crate::exports::*;
pub mod prelude {
pub use crate::exports::*;
pub use crate as ssz_rs;
pub use ssz_rs_derive::SimpleSerialize;
}
#[doc(hidden)]
pub mod __internal {
pub use crate::{
merkleization::{merkleize, mix_in_selector},
ser::Serializer,
};
}