acir::native_types

Struct Expression

Source
pub struct Expression<F> {
    pub mul_terms: Vec<(F, Witness, Witness)>,
    pub linear_combinations: Vec<(F, Witness)>,
    pub q_c: F,
}
Expand description

An expression representing a quadratic polynomial.

This struct is primarily used to express arithmetic relations between variables. It includes multiplication terms, linear combinations, and a constant term.

§Addition polynomial

  • Unlike standard plonk constraints with fixed wire assignments (wL, wR, wO), we allow arbitrary fan-in and fan-out. This means we need a more flexible representation and we need more than wL, wR, and wO.
  • When looking at the quotient polynomial for the assert-zero opcode in standard plonk, you can interpret the structure in two ways:
    1. Fan-in 2 and fan-out 1
    2. Fan-in 1 and fan-out 2

§Multiplication polynomial

  • If we were allow the degree of the quotient polynomial to be arbitrary, then we will need a vector of wire values.

Fields§

§mul_terms: Vec<(F, Witness, Witness)>

Collection of multiplication terms.

To avoid having to create intermediate variables pre-optimization We collect all of the multiplication terms in the assert-zero opcode A multiplication term is of the form q_M * wL * wR Hence this vector represents the following sum: q_M1 * wL1 * wR1 + q_M2 * wL2 * wR2 + .. +

§linear_combinations: Vec<(F, Witness)>

Collection of linear terms in the expression.

Each term follows the form: q_L * w, where q_L is a coefficient and w is a witness.

§q_c: F

A constant term in the expression

Implementations§

Source§

impl<F: Ord> Expression<F>

Source

fn get_max_idx(&self) -> WitnessIdx

Source

fn get_max_term(&self, idx: &mut WitnessIdx) -> Option<Witness>

Returns the maximum witness at the provided position, and decrement the position.

This function assumes the gate is sorted

Source

fn cmp_max(m1: Option<Witness>, m2: Option<Witness>) -> Ordering

Source§

impl<F> Expression<F>

Source

pub fn num_mul_terms(&self) -> usize

Returns the number of multiplication terms

Source

pub fn push_addition_term(&mut self, coefficient: F, variable: Witness)

Adds a new linear term to the Expression.

Source

pub fn push_multiplication_term( &mut self, coefficient: F, lhs: Witness, rhs: Witness, )

Adds a new quadratic term to the Expression.

Source

pub fn is_const(&self) -> bool

Returns true if the expression represents a constant polynomial.

Examples:

  • f(x,y) = x + y would return false
  • f(x,y) = xy would return false, the degree here is 2
  • f(x,y) = 5 would return true, the degree is 0
Source

pub fn to_const(&self) -> Option<&F>

Returns a FieldElement if the expression represents a constant polynomial. Otherwise returns None.

Examples:

  • f(x,y) = x would return None
  • f(x,y) = x + 6 would return None
  • f(x,y) = 2*y + 6 would return None
  • f(x,y) = x + y would return None
  • f(x,y) = 5 would return FieldElement(5)
Source

pub fn is_linear(&self) -> bool

Returns true if highest degree term in the expression is one or less.

  • mul_term in an expression contains degree-2 terms
  • linear_combinations contains degree-1 terms

Hence, it is sufficient to check that there are no mul_terms

Examples:

  • f(x,y) = x + y would return true
  • f(x,y) = xy would return false, the degree here is 2
  • f(x,y) = 0 would return true, the degree is 0
Source

pub fn is_degree_one_univariate(&self) -> bool

Returns true if the expression can be seen as a degree-1 univariate polynomial

  • mul_terms in an expression can be univariate, however unless the coefficient is zero, it is always degree-2.
  • linear_combinations contains the sum of degree-1 terms, these terms do not need to contain the same variable and so it can be multivariate. However, we have thus far only checked if linear_combinations contains one term, so this method will return false, if the Expression has not been simplified.

Hence, we check in the simplest case if an expression is a degree-1 univariate, by checking if it contains no mul_terms and it contains one linear_combination term.

Examples:

  • f(x,y) = x would return true
  • f(x,y) = x + 6 would return true
  • f(x,y) = 2*y + 6 would return true
  • f(x,y) = x + y would return false
  • f(x,y) = x + x should return true, but we return false *** (we do not simplify)
  • f(x,y) = 5 would return false
Source

pub fn sort(&mut self)

Sorts opcode in a deterministic order XXX: We can probably make this more efficient by sorting on each phase. We only care if it is deterministic

Source§

impl<F: AcirField> Expression<F>

Source

pub fn from_field(q_c: F) -> Self

Source

pub fn zero() -> Self

Source

pub fn is_zero(&self) -> bool

Source

pub fn one() -> Self

Source

pub fn to_witness(&self) -> Option<Witness>

Returns a Witness if the Expression can be represented as a degree-1 univariate polynomial. Otherwise returns None.

Note that Witness is only capable of expressing polynomials of the form f(x) = x and not polynomials of the form f(x) = mx+c , so this method has extra checks to ensure that m=1 and c=0

Source

pub fn add_mul(&self, k: F, b: &Self) -> Self

Returns self + k*b

Source

pub fn width(&self) -> usize

Determine the width of this expression. The width meaning the number of unique witnesses needed for this expression.

Trait Implementations§

Source§

impl<F: AcirField> Add<&Expression<F>> for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &Expression<F>) -> Self::Output

Performs the + operation. Read more
Source§

impl<F: AcirField> Add<&Expression<F>> for Witness

Source§

type Output = Expression<F>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &Expression<F>) -> Self::Output

Performs the + operation. Read more
Source§

impl<F: AcirField> Add<F> for Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
Source§

impl<F: AcirField> Add<Witness> for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Witness) -> Self::Output

Performs the + operation. Read more
Source§

impl<F: Clone> Clone for Expression<F>

Source§

fn clone(&self) -> Expression<F>

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<F: Debug> Debug for Expression<F>

Source§

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

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

impl<F: AcirField> Default for Expression<F>

Source§

fn default() -> Self

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

impl<'de, F> Deserialize<'de> for Expression<F>
where F: Deserialize<'de>,

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<F: Display> Display for Expression<F>

Source§

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

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

impl<F: AcirField> From<F> for Expression<F>

Source§

fn from(constant: F) -> Self

Converts to this type from the input type.
Source§

impl<F: AcirField> From<Witness> for Expression<F>

Source§

fn from(wit: Witness) -> Self

Creates an Expression from a Witness.

This is infallible since an Expression is a multi-variate polynomial and a Witness can be seen as a univariate polynomial

Source§

impl<F: Hash> Hash for Expression<F>

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<F: AcirField> Mul<&Expression<F>> for &Expression<F>

Source§

type Output = Option<Expression<F>>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &Expression<F>) -> Self::Output

Performs the * operation. Read more
Source§

impl<F: AcirField> Mul<F> for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
Source§

impl<F: AcirField> Neg for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<F: Ord> Ord for Expression<F>

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,

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

impl<F: PartialEq> PartialEq for Expression<F>

Source§

fn eq(&self, other: &Expression<F>) -> 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<F: Ord> PartialOrd for Expression<F>

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<F> ProtoCodec<Expression<F>, Expression> for ProtoSchema<F>
where F: AcirField,

Source§

fn encode(value: &Expression<F>) -> Expression

Convert domain type T to protobuf representation R.
Source§

fn decode(value: &Expression) -> Result<Expression<F>>

Try to convert protobuf representation R to domain type T.
Source§

fn encode_some(value: &T) -> Option<R>

Encode a field as Some.
Source§

fn encode_vec<'a, I>(values: I) -> Vec<R>
where I: IntoIterator<Item = &'a T>, T: 'a,

Encode multiple values as a vector.
Source§

fn decode_wrap(value: &R, msg: &'static str) -> Result<T, Report>

Decode a field and attach the name of the field if it fails.
Source§

fn decode_vec(values: &[R]) -> Result<Vec<T>, Report>

Decode multiple values into a vector.
Source§

fn decode_vec_wrap(values: &[R], msg: &'static str) -> Result<Vec<T>, Report>

Decode multiple values into a vector, attaching a field name to any errors.
Source§

fn decode_arr<const N: usize>(values: &[R]) -> Result<[T; N], Report>

Decode a fixed size array.
Source§

fn decode_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<[T; N], Report>

Decode a fixed size array, attaching a field name to any errors
Source§

fn decode_box_arr<const N: usize>(values: &[R]) -> Result<Box<[T; N]>, Report>

Decode a boxed fixed size array.
Source§

fn decode_box_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<Box<[T; N]>, Report>

Decode a boxed fixed size array, attaching a field name to any errors
Source§

fn decode_some(value: &Option<R>) -> Result<T, Report>

Decode an optional field as a required one; fails if it’s None.
Source§

fn decode_some_wrap(value: &Option<R>, msg: &'static str) -> Result<T, Report>

Decode an optional field as a required one, attaching a field name to any errors. Returns error if the field is missing.
Source§

fn decode_opt_wrap( value: &Option<R>, msg: &'static str, ) -> Result<Option<T>, Report>

Decode an optional field, attaching a field name to any errors. Return None if the field is missing.
Source§

fn serialize_to_vec(value: &T) -> Vec<u8>
where R: Message,

Encode a domain type to protobuf and serialize it to bytes.
Source§

fn deserialize_from_slice(buf: &[u8]) -> Result<T, Report>
where R: Message + Default,

Deserialize a buffer into protobuf and then decode into the domain type.
Source§

impl<F> Serialize for Expression<F>
where F: Serialize,

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<F: AcirField> Sub<&Expression<F>> for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &Expression<F>) -> Self::Output

Performs the - operation. Read more
Source§

impl<F: AcirField> Sub<&Expression<F>> for Witness

Source§

type Output = Expression<F>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &Expression<F>) -> Self::Output

Performs the - operation. Read more
Source§

impl<F: AcirField> Sub<F> for Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
Source§

impl<F: AcirField> Sub<Witness> for &Expression<F>

Source§

type Output = Expression<F>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Witness) -> Self::Output

Performs the - operation. Read more
Source§

impl<F: Eq> Eq for Expression<F>

Source§

impl<F> StructuralPartialEq for Expression<F>

Auto Trait Implementations§

§

impl<F> Freeze for Expression<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for Expression<F>
where F: RefUnwindSafe,

§

impl<F> Send for Expression<F>
where F: Send,

§

impl<F> Sync for Expression<F>
where F: Sync,

§

impl<F> Unpin for Expression<F>
where F: Unpin,

§

impl<F> UnwindSafe for Expression<F>
where F: UnwindSafe,

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
§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either [OwoColorize::fg] or a color-specific method, such as [OwoColorize::green], Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either [OwoColorize::bg] or a color-specific method, such as [OwoColorize::on_yellow], Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SectionExt for T
where T: Display + Send + Sync + 'static,

Source§

fn header<C>(self, header: C) -> IndentedSection<C, T>
where C: Display + Send + Sync + 'static,

Add a header to a Section and indent the body Read more
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> ToString for T
where T: Display + ?Sized,

Source§

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

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

§

fn vzip(self) -> V

§

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

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