From 6f4768cfa21a2daa5dfe6b27c57519a32efe368d Mon Sep 17 00:00:00 2001 From: Xiliang Chen <xlchen1291@gmail.com> Date: Mon, 7 Sep 2020 16:49:39 +1200 Subject: [PATCH] fix EnsureDelayed generic type (#275) --- authority/src/lib.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/authority/src/lib.rs b/authority/src/lib.rs index e97699e..3403fea 100644 --- a/authority/src/lib.rs +++ b/authority/src/lib.rs @@ -40,30 +40,34 @@ mod tests; /// A delayed origin. Can only be dispatched via `dispatch_as` with a delay. #[derive(PartialEq, Eq, Clone, RuntimeDebug, Encode, Decode)] -pub struct DelayedOrigin<BlockNumber, Origin> { +pub struct DelayedOrigin<BlockNumber, PalletsOrigin> { /// Number of blocks that this call have been delayed. pub delay: BlockNumber, /// The initial origin. - pub origin: Box<Origin>, + pub origin: Box<PalletsOrigin>, } /// Ensure the origin have a minimum amount of delay. -pub struct EnsureDelayed<Delay, Inner, BlockNumber>(sp_std::marker::PhantomData<(Delay, Inner, BlockNumber)>); +pub struct EnsureDelayed<Delay, Inner, BlockNumber, PalletsOrigin>( + sp_std::marker::PhantomData<(Delay, Inner, BlockNumber, PalletsOrigin)>, +); impl< - O: Into<Result<DelayedOrigin<BlockNumber, O>, O>> + From<DelayedOrigin<BlockNumber, O>>, + PalletsOrigin: Into<O>, + O: Into<Result<DelayedOrigin<BlockNumber, PalletsOrigin>, O>> + From<DelayedOrigin<BlockNumber, PalletsOrigin>>, Delay: Get<BlockNumber>, Inner: EnsureOrigin<O>, BlockNumber: PartialOrd, - > EnsureOrigin<O> for EnsureDelayed<Delay, Inner, BlockNumber> + > EnsureOrigin<O> for EnsureDelayed<Delay, Inner, BlockNumber, PalletsOrigin> { type Success = Inner::Success; fn try_origin(o: O) -> Result<Self::Success, O> { o.into().and_then(|delayed_origin| { if delayed_origin.delay >= Delay::get() { - Inner::try_origin(*delayed_origin.origin) + let pallets_origin = *delayed_origin.origin; + Inner::try_origin(pallets_origin.into()) } else { - Err(*delayed_origin.origin) + Err(delayed_origin.into()) } }) } -- GitLab