pub trait ScalarLe: Sized {
    // Required methods
    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>;
    fn deserialize<'de, D: Deserializer<'de>>(
        deserializer: D
    ) -> Result<Self, D::Error>;
}
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_unchecked([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: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize scalar as little-endian

source

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

Deserialize into scalar from little-endian

Object Safety§

This trait is not object safe.

Implementors§