Struct subspace_core_primitives::crypto::Scalar

source ·
pub struct Scalar(/* private fields */);
Expand description

Representation of a single BLS12-381 scalar value.

Implementations§

source§

impl Scalar

source

pub const SAFE_BYTES: usize = 31usize

How many full bytes can be stored in BLS12-381 scalar (for instance before encoding). It is actually 254 bits, but bits are mut harder to work with and likely not worth it.

NOTE: After encoding more bytes can be used, so don’t rely on this as the max number of bytes stored within at all times!

source

pub const FULL_BYTES: usize = 32usize

How many bytes Scalar contains physically, use Self::SAFE_BYTES for the amount of data that you can put into it safely (for instance before encoding).

source

pub fn to_bytes(&self) -> [u8; 32]

Convert scalar into bytes

source

pub fn try_to_safe_bytes(&self) -> Option<[u8; 31]>

Convert scalar into safe bytes, returns None if not possible to convert due to larger internal value

source

pub fn slice_to_repr(value: &[Self]) -> &[FsFr]

Convenient conversion from slice of scalar to underlying representation for efficiency purposes.

source

pub fn slice_from_repr(value: &[FsFr]) -> &[Self]

Convenient conversion from slice of underlying representation to scalar for efficiency purposes.

source

pub fn slice_option_to_repr(value: &[Option<Self>]) -> &[Option<FsFr>]

Convenient conversion from slice of optional scalar to underlying representation for efficiency purposes.

source

pub fn slice_option_from_repr(value: &[Option<FsFr>]) -> &[Option<Self>]

Convenient conversion from slice of optional underlying representation to scalar for efficiency purposes.

source

pub fn slice_mut_to_repr(value: &mut [Self]) -> &mut [FsFr]

Convenient conversion from mutable slice of scalar to underlying representation for efficiency purposes.

source

pub fn slice_mut_from_repr(value: &mut [FsFr]) -> &mut [Self]

Convenient conversion from mutable slice of underlying representation to scalar for efficiency purposes.

source

pub fn slice_option_mut_to_repr( value: &mut [Option<Self>], ) -> &mut [Option<FsFr>]

Convenient conversion from optional mutable slice of scalar to underlying representation for efficiency purposes.

source

pub fn slice_option_mut_from_repr( value: &mut [Option<FsFr>], ) -> &mut [Option<Self>]

Convenient conversion from optional mutable slice of underlying representation to scalar for efficiency purposes.

source

pub fn vec_to_repr(value: Vec<Self>) -> Vec<FsFr>

Convenient conversion from vector of scalar to underlying representation for efficiency purposes.

source

pub fn vec_from_repr(value: Vec<FsFr>) -> Vec<Self>

Convenient conversion from vector of underlying representation to scalar for efficiency purposes.

source

pub fn vec_option_to_repr(value: Vec<Option<Self>>) -> Vec<Option<FsFr>>

Convenient conversion from vector of optional scalar to underlying representation for efficiency purposes.

source

pub fn vec_option_from_repr(value: Vec<Option<FsFr>>) -> Vec<Option<Self>>

Convenient conversion from vector of optional underlying representation to scalar for efficiency purposes.

Trait Implementations§

source§

impl AsMut<FsFr> for Scalar

source§

fn as_mut(&mut self) -> &mut FsFr

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl AsRef<FsFr> for Scalar

source§

fn as_ref(&self) -> &FsFr

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for Scalar

source§

fn clone(&self) -> Scalar

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Scalar

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decode for Scalar

source§

fn decode<I: Input>(input: &mut I) -> Result<Self, Error>

Attempt to deserialise the value from input.
source§

fn encoded_fixed_size() -> Option<usize>

Returns the fixed encoded size of the type. Read more
§

fn decode_into<I>( input: &mut I, dst: &mut MaybeUninit<Self>, ) -> Result<DecodeFinished, Error>
where I: Input,

Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§

fn skip<I>(input: &mut I) -> Result<(), Error>
where I: Input,

Attempt to skip the encoded value from input. Read more
source§

impl Default for Scalar

source§

fn default() -> Scalar

Returns the “default value” for a type. Read more
source§

impl Deref for Scalar

§

type Target = FsFr

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for Scalar

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'de> Deserialize<'de> for Scalar

source§

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

Deserialize this value from the given Serde deserializer. Read more
source§

impl Encode for Scalar

source§

fn size_hint(&self) -> usize

If possible give a hint of expected size of the encoding. Read more
source§

fn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R

Convert self to a slice and then invoke the given closure with it.
source§

fn encoded_size(&self) -> usize

Calculates the encoded size. Read more
§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Convert self to a slice and append it to the destination.
§

fn encode(&self) -> Vec<u8>

Convert self to an owned vector.
source§

impl From<&[u8; 31]> for Scalar

source§

fn from(value: &[u8; 31]) -> Self

Converts to this type from the input type.
source§

impl From<&Scalar> for [u8; 32]

source§

fn from(value: &Scalar) -> Self

Converts to this type from the input type.
source§

impl From<[u8; 31]> for Scalar

source§

fn from(value: [u8; 31]) -> Self

Converts to this type from the input type.
source§

impl From<FsFr> for Scalar

source§

fn from(value: FsFr) -> Self

Converts to this type from the input type.
source§

impl From<Scalar> for [u8; 32]

source§

fn from(value: Scalar) -> Self

Converts to this type from the input type.
source§

impl From<Scalar> for FsFr

source§

fn from(value: Scalar) -> Self

Converts to this type from the input type.
source§

impl Hash for Scalar

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl MaxEncodedLen for Scalar

source§

fn max_encoded_len() -> usize

Upper bound, in bytes, of the maximum encoded size of this item.
source§

impl Ord for Scalar

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Scalar

source§

fn eq(&self, other: &Scalar) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Scalar

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for Scalar

source§

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

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<&[u8; 32]> for Scalar

§

type Error = String

The type returned in the event of a conversion error.
source§

fn try_from(value: &[u8; 32]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<[u8; 32]> for Scalar

§

type Error = String

The type returned in the event of a conversion error.
source§

fn try_from(value: [u8; 32]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TypeInfo for Scalar

§

type Identity = Scalar

The type identifying for which type info is provided. Read more
source§

fn type_info() -> Type

Returns the static type identifier for Self.
source§

impl Copy for Scalar

source§

impl EncodeLike for Scalar

source§

impl Eq for Scalar

source§

impl StructuralPartialEq for Scalar

Auto Trait Implementations§

§

impl Freeze for Scalar

§

impl RefUnwindSafe for Scalar

§

impl Send for Scalar

§

impl Sync for Scalar

§

impl Unpin for Scalar

§

impl UnwindSafe for Scalar

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> DecodeAll for T
where T: Decode,

§

fn decode_all(input: &mut &[u8]) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
§

impl<T> DecodeLimit for T
where T: Decode,

§

fn decode_all_with_depth_limit( limit: u32, input: &mut &[u8], ) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
§

fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>
where I: Input,

Decode Self with the given maximum recursion depth and advance input by the number of bytes consumed. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> KeyedVec for T
where T: Codec,

§

fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8>

Return an encoding of Self prepended by given slice.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S> Codec for S
where S: Decode + Encode,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> EncodeLike<&&T> for T
where T: Encode,

§

impl<T> EncodeLike<&T> for T
where T: Encode,

§

impl<T> EncodeLike<&mut T> for T
where T: Encode,

§

impl<T> EncodeLike<Arc<T>> for T
where T: Encode,

§

impl<T> EncodeLike<Box<T>> for T
where T: Encode,

§

impl<'a, T> EncodeLike<Cow<'a, T>> for T
where T: ToOwned + Encode,

§

impl<T> EncodeLike<Rc<T>> for T
where T: Encode,

§

impl<S> FullCodec for S
where S: Decode + FullEncode,

§

impl<S> FullEncode for S
where S: Encode + EncodeLike,

§

impl<T> JsonSchemaMaybe for T

§

impl<T> StaticTypeInfo for T
where T: TypeInfo + 'static,