From c5a7b8ac7987ef8721a78d7601e2cd506255e3ec Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Mon, 8 May 2023 18:41:41 +0200 Subject: [PATCH] Remove manual implementation --- primitives/runtime/src/curve.rs | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/primitives/runtime/src/curve.rs b/primitives/runtime/src/curve.rs index 7cea92293b4a0..2fc032cfafe2d 100644 --- a/primitives/runtime/src/curve.rs +++ b/primitives/runtime/src/curve.rs @@ -22,9 +22,10 @@ use crate::{ Perbill, }; use core::ops::Sub; +use scale_info::TypeInfo; /// Piecewise Linear function in [0, 1] -> [0, 1]. -#[derive(PartialEq, Eq, sp_core::RuntimeDebug)] +#[derive(PartialEq, Eq, sp_core::RuntimeDebug, TypeInfo)] pub struct PiecewiseLinear<'a> { /// Array of points. Must be in order from the lowest abscissas to the highest. pub points: &'a [(Perbill, Perbill)], @@ -32,36 +33,6 @@ pub struct PiecewiseLinear<'a> { pub maximum: Perbill, } -// This can be replaced with -// #[derive(scale_info::TypeInfo)] -// #[scale_info(skip_type_params(S))] -// again once this issue is fixed in the rust compiler: https://github.com/rust-lang/rust/issues/96956 -// Tracking issues: https://github.com/paritytech/substrate/issues/11915 -impl scale_info::TypeInfo for PiecewiseLinear<'static> { - type Identity = Self; - fn type_info() -> ::scale_info::Type { - scale_info::Type::builder() - .path(scale_info::Path::new("PiecewiseLinear", "sp_runtime::curve")) - .type_params(crate::Vec::new()) - .docs(&["Piecewise Linear function in [0, 1] -> [0, 1]."]) - .composite( - scale_info::build::Fields::named() - .field(|f| { - f.ty::<&'static[(Perbill, Perbill)]>() - .name("points") - .type_name("&'static[(Perbill, Perbill)]") - .docs(&["Array of points. Must be in order from the lowest abscissas to the highest."]) - }) - .field(|f| { - f.ty::() - .name("maximum") - .type_name("Perbill") - .docs(&["The maximum value that can be returned."]) - }), - ) - } -} - fn abs_sub + Clone>(a: N, b: N) -> N where { a.clone().max(b.clone()) - a.min(b) }