Consistently use `Debug` and `Display`.
This commit is contained in:
parent
1027dda432
commit
1d4710a39e
|
@ -1,5 +1,6 @@
|
|||
macro_rules! curve_impl {
|
||||
(
|
||||
$name:expr,
|
||||
$projective:ident,
|
||||
$affine:ident,
|
||||
$prepared:ident,
|
||||
|
@ -15,13 +16,31 @@ macro_rules! curve_impl {
|
|||
pub(crate) infinity: bool
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Eq)]
|
||||
impl ::std::fmt::Display for $affine
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
if self.infinity {
|
||||
write!(f, "{}(Infinity)", $name)
|
||||
} else {
|
||||
write!(f, "{}(x={}, y={})", $name, self.x, self.y)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Eq, Debug)]
|
||||
pub struct $projective {
|
||||
pub(crate) x: $basefield,
|
||||
pub(crate) y: $basefield,
|
||||
pub(crate) z: $basefield
|
||||
}
|
||||
|
||||
impl ::std::fmt::Display for $projective
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "{}", self.into_affine())
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for $projective {
|
||||
fn eq(&self, other: &$projective) -> bool {
|
||||
if self.is_zero() {
|
||||
|
@ -558,7 +577,7 @@ pub mod g1 {
|
|||
use super::super::{Fq, Fr, FrRepr, FqRepr};
|
||||
use ::{CurveProjective, CurveAffine, PrimeField, SqrtField, PrimeFieldRepr, Field, BitIterator, EncodedPoint, GroupDecodingError};
|
||||
|
||||
curve_impl!(G1, G1Affine, G1Prepared, Fq, Fr, G1Uncompressed, G1Compressed);
|
||||
curve_impl!("E", G1, G1Affine, G1Prepared, Fq, Fr, G1Uncompressed, G1Compressed);
|
||||
|
||||
pub struct G1Uncompressed([u8; 96]);
|
||||
|
||||
|
@ -1114,7 +1133,7 @@ pub mod g2 {
|
|||
use super::super::{Fq2, Fr, Fq, FrRepr, FqRepr};
|
||||
use ::{CurveProjective, CurveAffine, PrimeField, SqrtField, PrimeFieldRepr, Field, BitIterator, EncodedPoint, GroupDecodingError};
|
||||
|
||||
curve_impl!(G2, G2Affine, G2Prepared, Fq2, Fr, G2Uncompressed, G2Compressed);
|
||||
curve_impl!("E'", G2, G2Affine, G2Prepared, Fq2, Fr, G2Uncompressed, G2Compressed);
|
||||
|
||||
pub struct G2Uncompressed([u8; 192]);
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ pub const FROBENIUS_COEFF_FQ12_C1: [Fq2; 12] = [
|
|||
// -((2**384) mod q) mod q
|
||||
pub const NEGATIVE_ONE: Fq = Fq(FqRepr([0x43f5fffffffcaaae, 0x32b7fff2ed47fffd, 0x7e83a49a2e99d69, 0xeca8f3318332bb7a, 0xef148d1ea0f4c069, 0x40ab3263eff0206]));
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Default)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Default, Debug)]
|
||||
pub struct FqRepr(pub [u64; 6]);
|
||||
|
||||
impl ::rand::Rand for FqRepr {
|
||||
|
@ -202,7 +202,7 @@ impl ::rand::Rand for FqRepr {
|
|||
}
|
||||
}
|
||||
|
||||
impl ::std::fmt::Debug for FqRepr
|
||||
impl ::std::fmt::Display for FqRepr
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
try!(write!(f, "0x"));
|
||||
|
@ -355,7 +355,7 @@ impl PrimeFieldRepr for FqRepr {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
||||
pub struct Fq(FqRepr);
|
||||
|
||||
/// `Fq` elements are ordered lexicographically.
|
||||
|
@ -373,10 +373,10 @@ impl PartialOrd for Fq {
|
|||
}
|
||||
}
|
||||
|
||||
impl ::std::fmt::Debug for Fq
|
||||
impl ::std::fmt::Display for Fq
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "Fq({:?})", self.into_repr())
|
||||
write!(f, "Fq({})", self.into_repr())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -408,7 +408,7 @@ impl PrimeField for Fq {
|
|||
|
||||
Ok(r)
|
||||
} else {
|
||||
Err(PrimeFieldDecodingError::NotInField(format!("{:?}", r.0)))
|
||||
Err(PrimeFieldDecodingError::NotInField(format!("{}", r.0)))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1676,33 +1676,33 @@ fn bench_fq_from_repr(b: &mut ::test::Bencher) {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_fq_repr_debug() {
|
||||
fn test_fq_repr_display() {
|
||||
assert_eq!(
|
||||
format!("{:?}", FqRepr([0xa956babf9301ea24, 0x39a8f184f3535c7b, 0xb38d35b3f6779585, 0x676cc4eef4c46f2c, 0xb1d4aad87651e694, 0x1947f0d5f4fe325a])),
|
||||
format!("{}", FqRepr([0xa956babf9301ea24, 0x39a8f184f3535c7b, 0xb38d35b3f6779585, 0x676cc4eef4c46f2c, 0xb1d4aad87651e694, 0x1947f0d5f4fe325a])),
|
||||
"0x1947f0d5f4fe325ab1d4aad87651e694676cc4eef4c46f2cb38d35b3f677958539a8f184f3535c7ba956babf9301ea24".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FqRepr([0xb4171485fd8622dd, 0x864229a6edec7ec5, 0xc57f7bdcf8dfb707, 0x6db7ff0ecea4584a, 0xf8d8578c4a57132d, 0x6eb66d42d9fcaaa])),
|
||||
format!("{}", FqRepr([0xb4171485fd8622dd, 0x864229a6edec7ec5, 0xc57f7bdcf8dfb707, 0x6db7ff0ecea4584a, 0xf8d8578c4a57132d, 0x6eb66d42d9fcaaa])),
|
||||
"0x06eb66d42d9fcaaaf8d8578c4a57132d6db7ff0ecea4584ac57f7bdcf8dfb707864229a6edec7ec5b4171485fd8622dd".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FqRepr([0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff])),
|
||||
format!("{}", FqRepr([0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff])),
|
||||
"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FqRepr([0, 0, 0, 0, 0, 0])),
|
||||
format!("{}", FqRepr([0, 0, 0, 0, 0, 0])),
|
||||
"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".to_string()
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fq_debug() {
|
||||
fn test_fq_display() {
|
||||
assert_eq!(
|
||||
format!("{:?}", Fq::from_repr(FqRepr([0xa956babf9301ea24, 0x39a8f184f3535c7b, 0xb38d35b3f6779585, 0x676cc4eef4c46f2c, 0xb1d4aad87651e694, 0x1947f0d5f4fe325a])).unwrap()),
|
||||
format!("{}", Fq::from_repr(FqRepr([0xa956babf9301ea24, 0x39a8f184f3535c7b, 0xb38d35b3f6779585, 0x676cc4eef4c46f2c, 0xb1d4aad87651e694, 0x1947f0d5f4fe325a])).unwrap()),
|
||||
"Fq(0x1947f0d5f4fe325ab1d4aad87651e694676cc4eef4c46f2cb38d35b3f677958539a8f184f3535c7ba956babf9301ea24)".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", Fq::from_repr(FqRepr([0xe28e79396ac2bbf8, 0x413f6f7f06ea87eb, 0xa4b62af4a792a689, 0xb7f89f88f59c1dc5, 0x9a551859b1e43a9a, 0x6c9f5a1060de974])).unwrap()),
|
||||
format!("{}", Fq::from_repr(FqRepr([0xe28e79396ac2bbf8, 0x413f6f7f06ea87eb, 0xa4b62af4a792a689, 0xb7f89f88f59c1dc5, 0x9a551859b1e43a9a, 0x6c9f5a1060de974])).unwrap()),
|
||||
"Fq(0x06c9f5a1060de9749a551859b1e43a9ab7f89f88f59c1dc5a4b62af4a792a689413f6f7f06ea87ebe28e79396ac2bbf8)".to_string()
|
||||
);
|
||||
}
|
||||
|
|
|
@ -5,12 +5,19 @@ use super::fq2::Fq2;
|
|||
use super::fq::{FROBENIUS_COEFF_FQ12_C1};
|
||||
|
||||
/// An element of Fq12, represented by c0 + c1 * w.
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
|
||||
pub struct Fq12 {
|
||||
pub c0: Fq6,
|
||||
pub c1: Fq6
|
||||
}
|
||||
|
||||
impl ::std::fmt::Display for Fq12
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "Fq12({} + {} * w)", self.c0, self.c1)
|
||||
}
|
||||
}
|
||||
|
||||
impl Rand for Fq12 {
|
||||
fn rand<R: Rng>(rng: &mut R) -> Self {
|
||||
Fq12 {
|
||||
|
|
|
@ -5,12 +5,19 @@ use super::fq::{Fq, FROBENIUS_COEFF_FQ2_C1, NEGATIVE_ONE};
|
|||
use std::cmp::Ordering;
|
||||
|
||||
/// An element of Fq2, represented by c0 + c1 * u.
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
|
||||
pub struct Fq2 {
|
||||
pub c0: Fq,
|
||||
pub c1: Fq
|
||||
}
|
||||
|
||||
impl ::std::fmt::Display for Fq2
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "Fq2({} + {} * u)", self.c0, self.c1)
|
||||
}
|
||||
}
|
||||
|
||||
/// `Fq2` elements are ordered lexicographically.
|
||||
impl Ord for Fq2 {
|
||||
#[inline(always)]
|
||||
|
|
|
@ -4,13 +4,20 @@ use super::fq2::Fq2;
|
|||
use super::fq::{FROBENIUS_COEFF_FQ6_C1, FROBENIUS_COEFF_FQ6_C2};
|
||||
|
||||
/// An element of Fq6, represented by c0 + c1 * v + c2 * v^2.
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
|
||||
pub struct Fq6 {
|
||||
pub c0: Fq2,
|
||||
pub c1: Fq2,
|
||||
pub c2: Fq2
|
||||
}
|
||||
|
||||
impl ::std::fmt::Display for Fq6
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "Fq6({} + {} * v, {} * v^2)", self.c0, self.c1, self.c2)
|
||||
}
|
||||
}
|
||||
|
||||
impl Rand for Fq6 {
|
||||
fn rand<R: Rng>(rng: &mut R) -> Self {
|
||||
Fq6 {
|
||||
|
|
|
@ -28,7 +28,7 @@ const S: usize = 32;
|
|||
// 2^s root of unity computed by GENERATOR^t
|
||||
const ROOT_OF_UNITY: FrRepr = FrRepr([0xb9b58d8c5f0e466a, 0x5b1b4c801819d7ec, 0xaf53ae352a31e64, 0x5bf3adda19e9b27b]);
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Default)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Default, Debug)]
|
||||
pub struct FrRepr(pub [u64; 4]);
|
||||
|
||||
impl ::rand::Rand for FrRepr {
|
||||
|
@ -38,7 +38,7 @@ impl ::rand::Rand for FrRepr {
|
|||
}
|
||||
}
|
||||
|
||||
impl ::std::fmt::Debug for FrRepr
|
||||
impl ::std::fmt::Display for FrRepr
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
try!(write!(f, "0x"));
|
||||
|
@ -191,13 +191,13 @@ impl PrimeFieldRepr for FrRepr {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
||||
pub struct Fr(FrRepr);
|
||||
|
||||
impl ::std::fmt::Debug for Fr
|
||||
impl ::std::fmt::Display for Fr
|
||||
{
|
||||
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
|
||||
write!(f, "Fr({:?})", self.into_repr())
|
||||
write!(f, "Fr({})", self.into_repr())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,7 +229,7 @@ impl PrimeField for Fr {
|
|||
|
||||
Ok(r)
|
||||
} else {
|
||||
Err(PrimeFieldDecodingError::NotInField(format!("{:?}", r.0)))
|
||||
Err(PrimeFieldDecodingError::NotInField(format!("{}", r.0)))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1388,33 +1388,33 @@ fn bench_fr_from_repr(b: &mut ::test::Bencher) {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_fr_repr_debug() {
|
||||
fn test_fr_repr_display() {
|
||||
assert_eq!(
|
||||
format!("{:?}", FrRepr([0x2829c242fa826143, 0x1f32cf4dd4330917, 0x932e4e479d168cd9, 0x513c77587f563f64])),
|
||||
format!("{}", FrRepr([0x2829c242fa826143, 0x1f32cf4dd4330917, 0x932e4e479d168cd9, 0x513c77587f563f64])),
|
||||
"0x513c77587f563f64932e4e479d168cd91f32cf4dd43309172829c242fa826143".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FrRepr([0x25ebe3a3ad3c0c6a, 0x6990e39d092e817c, 0x941f900d42f5658e, 0x44f8a103b38a71e0])),
|
||||
format!("{}", FrRepr([0x25ebe3a3ad3c0c6a, 0x6990e39d092e817c, 0x941f900d42f5658e, 0x44f8a103b38a71e0])),
|
||||
"0x44f8a103b38a71e0941f900d42f5658e6990e39d092e817c25ebe3a3ad3c0c6a".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FrRepr([0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff])),
|
||||
format!("{}", FrRepr([0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff])),
|
||||
"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", FrRepr([0, 0, 0, 0])),
|
||||
format!("{}", FrRepr([0, 0, 0, 0])),
|
||||
"0x0000000000000000000000000000000000000000000000000000000000000000".to_string()
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fr_debug() {
|
||||
fn test_fr_display() {
|
||||
assert_eq!(
|
||||
format!("{:?}", Fr::from_repr(FrRepr([0xc3cae746a3b5ecc7, 0x185ec8eb3f5b5aee, 0x684499ffe4b9dd99, 0x7c9bba7afb68faa])).unwrap()),
|
||||
format!("{}", Fr::from_repr(FrRepr([0xc3cae746a3b5ecc7, 0x185ec8eb3f5b5aee, 0x684499ffe4b9dd99, 0x7c9bba7afb68faa])).unwrap()),
|
||||
"Fr(0x07c9bba7afb68faa684499ffe4b9dd99185ec8eb3f5b5aeec3cae746a3b5ecc7)".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{:?}", Fr::from_repr(FrRepr([0x44c71298ff198106, 0xb0ad10817df79b6a, 0xd034a80a2b74132b, 0x41cf9a1336f50719])).unwrap()),
|
||||
format!("{}", Fr::from_repr(FrRepr([0x44c71298ff198106, 0xb0ad10817df79b6a, 0xd034a80a2b74132b, 0x41cf9a1336f50719])).unwrap()),
|
||||
"Fr(0x41cf9a1336f50719d034a80a2b74132bb0ad10817df79b6a44c71298ff198106)".to_string()
|
||||
);
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ pub trait CurveProjective: PartialEq +
|
|||
Send +
|
||||
Sync +
|
||||
fmt::Debug +
|
||||
fmt::Display +
|
||||
rand::Rand +
|
||||
'static
|
||||
{
|
||||
|
@ -159,6 +160,7 @@ pub trait CurveAffine: Copy +
|
|||
Send +
|
||||
Sync +
|
||||
fmt::Debug +
|
||||
fmt::Display +
|
||||
PartialEq +
|
||||
Eq +
|
||||
'static
|
||||
|
@ -247,6 +249,7 @@ pub trait Field: Sized +
|
|||
Send +
|
||||
Sync +
|
||||
fmt::Debug +
|
||||
fmt::Display +
|
||||
'static +
|
||||
rand::Rand
|
||||
{
|
||||
|
@ -327,6 +330,7 @@ pub trait PrimeFieldRepr: Sized +
|
|||
Send +
|
||||
Sync +
|
||||
fmt::Debug +
|
||||
fmt::Display +
|
||||
'static +
|
||||
rand::Rand +
|
||||
AsRef<[u64]> +
|
||||
|
|
Loading…
Reference in New Issue