snarkvm_circuit_types_scalar

Struct Scalar

Source
pub struct Scalar<E: Environment> { /* private fields */ }

Implementations§

Source§

impl<E: Environment> Scalar<E>

Source

pub fn from_field_lossy(field: &Field<E>) -> Self

Casts a scalar from a base field, with lossy truncation.

This method is commonly-used by hash-to-scalar algorithms, where the hash output does not need to preserve the full base field.

Trait Implementations§

Source§

impl<E: Environment> Add<&Scalar<E>> for &Scalar<E>

Source§

type Output = Scalar<E>

The resulting type after applying the + operator.
Source§

fn add(self, other: &Scalar<E>) -> Self::Output

Performs the + operation. Read more
Source§

impl<E: Environment> Add<&Scalar<E>> for Scalar<E>

Source§

type Output = Scalar<E>

The resulting type after applying the + operator.
Source§

fn add(self, other: &Scalar<E>) -> Self::Output

Performs the + operation. Read more
Source§

impl<E: Environment> Add<Scalar<E>> for &Scalar<E>

Source§

type Output = Scalar<E>

The resulting type after applying the + operator.
Source§

fn add(self, other: Scalar<E>) -> Self::Output

Performs the + operation. Read more
Source§

impl<E: Environment> Add for Scalar<E>

Source§

type Output = Scalar<E>

The resulting type after applying the + operator.
Source§

fn add(self, other: Scalar<E>) -> Self::Output

Performs the + operation. Read more
Source§

impl<E: Environment> AddAssign<&Scalar<E>> for Scalar<E>

Source§

fn add_assign(&mut self, other: &Scalar<E>)

Performs the += operation. Read more
Source§

impl<E: Environment> AddAssign for Scalar<E>

Source§

fn add_assign(&mut self, other: Scalar<E>)

Performs the += operation. Read more
Source§

impl<E: Clone + Environment> Clone for Scalar<E>

Source§

fn clone(&self) -> Scalar<E>

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<E: Environment> Compare for Scalar<E>

Source§

fn is_less_than(&self, other: &Self) -> Self::Output

Returns true if self is less than other.

Source§

fn is_greater_than(&self, other: &Self) -> Self::Output

Returns true if self is greater than other.

Source§

fn is_less_than_or_equal(&self, other: &Self) -> Self::Output

Returns true if self is less than or equal to other.

Source§

fn is_greater_than_or_equal(&self, other: &Self) -> Self::Output

Returns true if self is greater than or equal to other.

Source§

type Output = Boolean<E>

Source§

impl<E: Environment> Debug for Scalar<E>

Source§

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

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

impl<E: Environment> Display for Scalar<E>

Source§

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

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

impl<E: Environment> Eject for Scalar<E>

Source§

fn eject_mode(&self) -> Mode

Ejects the mode of the scalar.

Source§

fn eject_value(&self) -> Self::Primitive

Ejects the scalar circuit as a console scalar.

Source§

type Primitive = Scalar<<E as Environment>::Network>

Source§

fn eject(&self) -> (Mode, Self::Primitive)

Ejects the mode and primitive value of the circuit type.
Source§

fn is_constant(&self) -> bool

Returns true if the circuit is a constant.
Source§

fn is_public(&self) -> bool

Returns true if the circuit is a public.
Source§

fn is_private(&self) -> bool

Returns true if the circuit is a private.
Source§

impl<E: Environment> Equal for Scalar<E>

Source§

fn is_equal(&self, other: &Self) -> Self::Output

Returns true if self and other are equal.

Source§

fn is_not_equal(&self, other: &Self) -> Self::Output

Returns true if self and other are not equal.

Source§

type Output = Boolean<E>

Source§

impl<E: Environment> From<&Scalar<E>> for LinearCombination<E::BaseField>

Source§

fn from(scalar: &Scalar<E>) -> Self

Converts to this type from the input type.
Source§

impl<E: Environment> From<Scalar<E>> for LinearCombination<E::BaseField>

Source§

fn from(scalar: Scalar<E>) -> Self

Converts to this type from the input type.
Source§

impl<E: Environment> FromBits for Scalar<E>

Source§

fn from_bits_le(bits_le: &[Self::Boolean]) -> Self

Initializes a new scalar field element from a list of little-endian bits.

  • If bits_le is longer than E::ScalarField::size_in_bits(), the excess bits are enforced to be 0s.
  • If bits_le is shorter than E::ScalarField::size_in_bits(), it is padded with 0s up to scalar field size.
Source§

fn from_bits_be(bits_be: &[Self::Boolean]) -> Self

Initializes a new scalar field element from a list of big-endian bits without leading zeros.

Source§

type Boolean = Boolean<E>

Source§

impl<E: Environment> FromField for Scalar<E>

Source§

fn from_field(field: Self::Field) -> Self

Casts a scalar from a base field element.

This method guarantees the following:

  1. If the field element is larger than the scalar field modulus, then the operation will fail.
  2. If the field element is smaller than the scalar field modulus, then the operation will succeed.
    • This is particularly useful for the case where a user called, Scalar::from_field(scalar.to_field()), and the scalar bit representation is between size_in_data_bits < bits.len() < size_in_bits.
Source§

type Field = Field<E>

Source§

impl<E: Environment> FromStr for Scalar<E>

Source§

fn from_str(string: &str) -> Result<Self>

Parses a string into a scalar circuit.

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

impl<E: Environment> Inject for Scalar<E>

Source§

fn new(mode: Mode, scalar: Self::Primitive) -> Self

Initializes a scalar circuit from a console scalar.

Source§

type Primitive = Scalar<<E as Environment>::Network>

Source§

fn constant(value: Self::Primitive) -> Self
where Self: Sized,

Initializes a constant of the given primitive value.
Source§

impl<E: Environment> Metrics<dyn Add<Scalar<E>, Output = Scalar<E>>> for Scalar<E>

Source§

type Case = (Mode, Mode)

Source§

fn count(case: &Self::Case) -> Count

Returns the number of constants, public inputs, private inputs, and constraints.
Source§

impl<E: Environment> One for Scalar<E>

Source§

type Boolean = Boolean<E>

Source§

fn one() -> Self

Returns a new one constant.
Source§

fn is_one(&self) -> Self::Boolean

Returns true if self is one.
Source§

impl<E: Environment> OutputMode<dyn Add<Scalar<E>, Output = Scalar<E>>> for Scalar<E>

Source§

type Case = (Mode, Mode)

Source§

fn output_mode(case: &Self::Case) -> Mode

Returns the mode of the output.
Source§

impl<E: Environment> Parser for Scalar<E>

Source§

fn parse(string: &str) -> ParserResult<'_, Self>

Parses a string into a scalar circuit.

Source§

impl<E: Environment> Ternary for Scalar<E>

Source§

fn ternary( condition: &Self::Boolean, first: &Self, second: &Self, ) -> Self::Output

Returns first if condition is true, otherwise returns second.

Source§

type Boolean = Boolean<E>

Source§

type Output = Scalar<E>

Source§

impl<E: Environment> ToBits for &Scalar<E>

Source§

fn write_bits_le(&self, vec: &mut Vec<Self::Boolean>)

Outputs the little-endian bit representation of self without trailing zeros.

Source§

fn write_bits_be(&self, vec: &mut Vec<Self::Boolean>)

Outputs the big-endian bit representation of self without leading zeros.

Source§

type Boolean = Boolean<E>

Source§

fn to_bits_le(&self) -> Vec<Self::Boolean>

Returns the little-endian bits of the circuit.
Source§

fn to_bits_be(&self) -> Vec<Self::Boolean>

Returns the big-endian bits of the circuit.
Source§

impl<E: Environment> ToBits for Scalar<E>

Source§

fn write_bits_le(&self, vec: &mut Vec<Self::Boolean>)

Outputs the little-endian bit representation of self without trailing zeros.

Source§

fn write_bits_be(&self, vec: &mut Vec<Self::Boolean>)

Outputs the big-endian bit representation of self without leading zeros.

Source§

type Boolean = Boolean<E>

Source§

fn to_bits_le(&self) -> Vec<Self::Boolean>

Returns the little-endian bits of the circuit.
Source§

fn to_bits_be(&self) -> Vec<Self::Boolean>

Returns the big-endian bits of the circuit.
Source§

impl<E: Environment> ToField for Scalar<E>

Source§

fn to_field(&self) -> Self::Field

Casts a scalar field element into a base field element.

Source§

type Field = Field<E>

Source§

impl<E: Environment> ToFields for Scalar<E>

Source§

fn to_fields(&self) -> Vec<Self::Field>

Casts a scalar into a list of base fields.

Source§

type Field = Field<E>

Source§

impl<E: Environment> TypeName for Scalar<E>

Source§

fn type_name() -> &'static str

Returns the type name of the circuit as a string.

Source§

impl<E: Environment> Zero for Scalar<E>

Source§

type Boolean = Boolean<E>

Source§

fn zero() -> Self

Returns a new zero constant.
Source§

fn is_zero(&self) -> Self::Boolean

Returns true if self is zero.
Source§

impl<E: Environment> ScalarTrait for Scalar<E>

Auto Trait Implementations§

§

impl<E> !Freeze for Scalar<E>

§

impl<E> RefUnwindSafe for Scalar<E>

§

impl<E> !Send for Scalar<E>

§

impl<E> !Sync for Scalar<E>

§

impl<E> Unpin for Scalar<E>
where <E as Environment>::BaseField: Unpin,

§

impl<E> UnwindSafe for Scalar<E>

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§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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> ToSmolStr for T
where T: Display + ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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>,

Source§

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V