Trait bls12_381_plus::ScalarLe
source · 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§
sourcefn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>
Serialize scalar as little-endian
sourcefn deserialize<'de, D: Deserializer<'de>>(
deserializer: D
) -> Result<Self, D::Error>
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.