The fp31! macro is used to define a new field where you can specify the number of limbs (among other things).
constant_unsigned_array31! { 9, 16 }
implements the ConstantUnsignedArray31 trait for "limbs" of length 9 and 16, the two provided by the crate Fp256 and Fp480.
This issue can be solved by exporting the macro that implements the ConstantUnsignedArray31 trait like this
#[macro_export]
macro_rules! constant_unsigned_array31 { ($($N:expr),*) => { $(
...
and then allowing the end user to implement the trait themselves for their desired limbs.
Or, when using the fp31! macro to create a field of n limbs, use the constant_unsigned_array31! macro within the macro to implement the trait for [u32; $n].
The
fp31!macro is used to define a new field where you can specify the number of limbs (among other things).implements the
ConstantUnsignedArray31trait for "limbs" of length 9 and 16, the two provided by the crateFp256andFp480.This issue can be solved by exporting the macro that implements the
ConstantUnsignedArray31trait like thisand then allowing the end user to implement the trait themselves for their desired limbs.
Or, when using the
fp31!macro to create a field of n limbs, use theconstant_unsigned_array31!macro within the macro to implement the trait for[u32; $n].