Derive Macro parity_scale_codec::MaxEncodedLen
source · #[derive(MaxEncodedLen)]
{
// Attributes available to this derive:
#[max_encoded_len_mod]
}
Expand description
Derive macro for MaxEncodedLen
.
Examples
#[derive(Encode, MaxEncodedLen)]
struct Example;
#[derive(Encode, MaxEncodedLen)]
struct TupleStruct(u8, u32);
assert_eq!(TupleStruct::max_encoded_len(), u8::max_encoded_len() + u32::max_encoded_len());
#[derive(Encode, MaxEncodedLen)]
enum GenericEnum<T> {
A,
B(T),
}
assert_eq!(GenericEnum::<u8>::max_encoded_len(), u8::max_encoded_len() + u8::max_encoded_len());
assert_eq!(GenericEnum::<u128>::max_encoded_len(), u8::max_encoded_len() + u128::max_encoded_len());
Within other macros
Sometimes the MaxEncodedLen
trait and macro are used within another macro, and it can’t be
guaranteed that the parity_scale_codec
module is available at the call site. In that case, the
macro should reexport the parity_scale_codec
module and specify the path to the reexport:
ⓘ
pub use parity_scale_codec as codec;
#[derive(Encode, MaxEncodedLen)]
#[codec(crate = $crate::codec)]
struct Example;
Derive parity_scale_codec::MaxEncodedLen
for struct and enum.
Top level attribute
By default the macro will try to bound the types needed to implement MaxEncodedLen
, but the
bounds can be specified manually with the top level attribute:
#[codec(mel_bound(T: MaxEncodedLen))]