1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use crate::{ArkScale,ArkScaleRef,WIRE,MaxEncodedLen}; // ConstEncodedLen
use ark_serialize::{CanonicalSerialize}; // CanonicalDeserialize,
/// An orphan rules helper which provides
/// `impl scale::MaxEncodedLen for ArkScale<T,WIRE>`
///
/// We suggest wrapper types in preference to this trait becuase
/// on-chain verifier code becomes substrate aware anyways whenever
/// you choose curves, via a conditional ark-substrate dependence.
/// Also wrappers can improve documentation and errors.
pub trait ArkScaleMaxEncodedLen {
/// Upper bound, in bytes, of the maximum encoded size of this item.
fn max_encoded_len() -> usize;
}
impl<T> MaxEncodedLen for ArkScale<T, WIRE>
where T: CanonicalSerialize+ArkScaleMaxEncodedLen,
{
fn max_encoded_len() -> usize {
<T as ArkScaleMaxEncodedLen>::max_encoded_len()
}
}
impl<'a,T> MaxEncodedLen for ArkScaleRef<'a,T, WIRE>
where T: CanonicalSerialize+ArkScaleMaxEncodedLen,
{
fn max_encoded_len() -> usize {
<T as ArkScaleMaxEncodedLen>::max_encoded_len()
}
}
/*
/// An orphan rules helper which provides
/// `impl scale::ConstEncodedLen for ArkScale<T,WIRE>`
pub trait ArkScaleConstEncodedLen: ArkScaleMaxEncodedLen {}
impl<T> ConstEncodedLen for ArkScale<T, WIRE>
where T: CanonicalSerialize+ArkScaleConstEncodedLen,
{ }
impl<'a,T> ConstEncodedLen for ArkScaleRef<'a, T, WIRE>
where T: CanonicalSerialize+ArkScaleConstEncodedLen,
{ }
*/