pub trait ScalarLe: Sized {
    // Required methods
    fn serialize<S>(
        &self,
        serializer: S
    ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
       where S: Serializer;
    fn deserialize<'de, D>(
        deserializer: D
    ) -> Result<Self, <D as Deserializer<'de>>::Error>
       where D: Deserializer<'de>;
}
Expand description

A helper trait for serializing Scalars as little-endian instead of big endian.

use bls12_381_plus::{Scalar, ScalarLe};
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
pub struct TestStruct {
    #[serde(with = "ScalarLe")]
    scalar: Scalar,
}

let s = Scalar::from_raw([3u64, 3u64, 3u64, 3u64]);
let t = TestStruct { scalar: s };

let ser1 = serde_json::to_string(&t).unwrap();
let ser2 = serde_json::to_string(&s).unwrap();

assert_eq!(ser1, "{\"scalar\":\"0300000000000000030000000000000003000000000000000300000000000000\"}");
assert_eq!(ser2, "\"0000000000000003000000000000000300000000000000030000000000000003\"");

Required Methods§

source

fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,

Serialize scalar as little-endian

source

fn deserialize<'de, D>( deserializer: D ) -> Result<Self, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,

Deserialize into scalar from little-endian

Implementors§