pub enum DslIr<C: Config> {
Show 96 variants
ImmV(Var<C::N>, C::N),
ImmF(Felt<SP1Field>, SP1Field),
ImmE(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
AddV(Var<C::N>, Var<C::N>, Var<C::N>),
AddVI(Var<C::N>, Var<C::N>, C::N),
AddF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
AddFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field),
AddE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
AddEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
AddEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>),
AddEFFI(Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>, SP1ExtensionField),
SubV(Var<C::N>, Var<C::N>, Var<C::N>),
SubVI(Var<C::N>, Var<C::N>, C::N),
SubVIN(Var<C::N>, C::N, Var<C::N>),
SubF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
SubFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field),
SubFIN(Felt<SP1Field>, SP1Field, Felt<SP1Field>),
SubE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
SubEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
SubEIN(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField, Ext<SP1Field, SP1ExtensionField>),
SubEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>),
MulV(Var<C::N>, Var<C::N>, Var<C::N>),
MulVI(Var<C::N>, Var<C::N>, C::N),
MulF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
MulFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field),
MulE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
MulEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
MulEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>),
DivF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
DivFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field),
DivFIN(Felt<SP1Field>, SP1Field, Felt<SP1Field>),
DivE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
DivEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
DivEIN(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField, Ext<SP1Field, SP1ExtensionField>),
DivEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>),
NegV(Var<C::N>, Var<C::N>),
NegF(Felt<SP1Field>, Felt<SP1Field>),
NegE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
InvV(Var<C::N>, Var<C::N>),
InvF(Felt<SP1Field>, Felt<SP1Field>),
InvE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
Select(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
AssertEqV(Var<C::N>, Var<C::N>),
AssertNeV(Var<C::N>, Var<C::N>),
AssertEqF(Felt<SP1Field>, Felt<SP1Field>),
AssertNeF(Felt<SP1Field>, Felt<SP1Field>),
AssertEqE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
AssertNeE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
AssertEqVI(Var<C::N>, C::N),
AssertNeVI(Var<C::N>, C::N),
AssertEqFI(Felt<SP1Field>, SP1Field),
AssertNeFI(Felt<SP1Field>, SP1Field),
AssertEqEI(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
AssertNeEI(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField),
ReduceE(Ext<SP1Field, SP1ExtensionField>),
CircuitNum2BitsV(Var<C::N>, usize, Vec<Var<C::N>>),
CircuitNum2BitsF(Felt<SP1Field>, Vec<Var<C::N>>),
CircuitFelt2Var(Felt<SP1Field>, Var<C::N>),
Poseidon2ExternalLinearLayer(Box<([Ext<SP1Field, SP1ExtensionField>; 4], [Ext<SP1Field, SP1ExtensionField>; 4])>),
Poseidon2InternalLinearLayer(Box<([Ext<SP1Field, SP1ExtensionField>; 4], [Ext<SP1Field, SP1ExtensionField>; 4])>),
Poseidon2ExternalSBOX(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
Poseidon2InternalSBOX(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
CircuitPoseidon2Permute([Var<C::N>; 3]),
CircuitPoseidon2PermuteKoalaBear(Box<[Felt<SP1Field>; 16]>),
CircuitV2Poseidon2PermuteKoalaBear(Box<([Felt<SP1Field>; 16], [Felt<SP1Field>; 16])>),
CircuitV2CommitPublicValues(Box<RecursionPublicValues<Felt<SP1Field>>>),
CircuitV2HintBitsF(Vec<Felt<SP1Field>>, Felt<SP1Field>),
PrintV(Var<C::N>),
PrintF(Felt<SP1Field>),
PrintE(Ext<SP1Field, SP1ExtensionField>),
Error(),
CircuitV2HintFelts(Felt<SP1Field>, usize),
CircuitV2HintExts(Ext<SP1Field, SP1ExtensionField>, usize),
WitnessVar(Var<C::N>, u32),
WitnessFelt(Felt<SP1Field>, u32),
WitnessExt(Ext<SP1Field, SP1ExtensionField>, u32),
Commit(Felt<SP1Field>, Var<C::N>),
CircuitCommitVkeyHash(Var<C::N>),
CircuitCommitCommittedValuesDigest(Var<C::N>),
CircuitCommitExitCode(Var<C::N>),
CircuitCommitVkRoot(Var<C::N>),
CircuitCommitProofNonce(Var<C::N>),
CircuitV2HintAddCurve(Box<(SepticCurve<Felt<SP1Field>>, SepticCurve<Felt<SP1Field>>, SepticCurve<Felt<SP1Field>>)>),
CircuitV2PrefixSumChecks(Box<(Felt<SP1Field>, Ext<SP1Field, SP1ExtensionField>, Vec<Ext<SP1Field, SP1ExtensionField>>, Vec<Felt<SP1Field>>, Vec<Felt<SP1Field>>, Vec<Ext<SP1Field, SP1ExtensionField>>)>),
CircuitSelectV(Var<C::N>, Var<C::N>, Var<C::N>, Var<C::N>),
CircuitSelectF(Var<C::N>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>),
CircuitSelectE(Var<C::N>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
CircuitExt2Felt([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>),
CircuitFelts2Ext([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>),
EqEval(Felt<SP1Field>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>),
CircuitChipExt2Felt([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>),
CircuitChipFelt2Ext(Ext<SP1Field, SP1ExtensionField>, [Felt<SP1Field>; 4]),
CycleTrackerV2Enter(Cow<'static, str>),
CycleTrackerV2Exit,
Parallel(Vec<DslIrBlock<C>>),
DebugBacktrace(Backtrace),
}Expand description
An intermeddiate instruction set for implementing programs.
Programs written in the DSL can compile both to the recursive zkVM and the R1CS or Plonk-ish circuits.
Variants§
ImmV(Var<C::N>, C::N)
Assigns an immediate to a variable (var = imm).
ImmF(Felt<SP1Field>, SP1Field)
Assigns a field immediate to a field element (felt = field imm).
ImmE(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Assigns an ext field immediate to an extension field element (ext = ext field imm).
AddV(Var<C::N>, Var<C::N>, Var<C::N>)
Add two variables (var = var + var).
AddVI(Var<C::N>, Var<C::N>, C::N)
Add a variable and an immediate (var = var + imm).
AddF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Add two field elements (felt = felt + felt).
AddFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field)
Add a field element and a field immediate (felt = felt + field imm).
AddE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Add two extension field elements (ext = ext + ext).
AddEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Add an extension field element and an ext field immediate (ext = ext + ext field imm).
AddEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)
Add an extension field element and a field element (ext = ext + felt).
AddEFFI(Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>, SP1ExtensionField)
Add a field element and an ext field immediate (ext = felt + ext field imm).
SubV(Var<C::N>, Var<C::N>, Var<C::N>)
Subtracts two variables (var = var - var).
SubVI(Var<C::N>, Var<C::N>, C::N)
Subtracts a variable and an immediate (var = var - imm).
SubVIN(Var<C::N>, C::N, Var<C::N>)
Subtracts an immediate and a variable (var = imm - var).
SubF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Subtracts two field elements (felt = felt - felt).
SubFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field)
Subtracts a field element and a field immediate (felt = felt - field imm).
SubFIN(Felt<SP1Field>, SP1Field, Felt<SP1Field>)
Subtracts a field immediate and a field element (felt = field imm - felt).
SubE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Subtracts two extension field elements (ext = ext - ext).
SubEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Subtrancts an extension field element and an extension field immediate (ext = ext - ext field imm).
SubEIN(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField, Ext<SP1Field, SP1ExtensionField>)
Subtracts an extension field immediate and an extension field element (ext = ext field imm
- ext).
SubEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)
Subtracts an extension field element and a field element (ext = ext - felt).
MulV(Var<C::N>, Var<C::N>, Var<C::N>)
Multiplies two variables (var = var * var).
MulVI(Var<C::N>, Var<C::N>, C::N)
Multiplies a variable and an immediate (var = var * imm).
MulF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Multiplies two field elements (felt = felt * felt).
MulFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field)
Multiplies a field element and a field immediate (felt = felt * field imm).
MulE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Multiplies two extension field elements (ext = ext * ext).
MulEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Multiplies an extension field element and an extension field immediate (ext = ext * ext field imm).
MulEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)
Multiplies an extension field element and a field element (ext = ext * felt).
DivF(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Divides two variables (var = var / var).
DivFI(Felt<SP1Field>, Felt<SP1Field>, SP1Field)
Divides a field element and a field immediate (felt = felt / field imm).
DivFIN(Felt<SP1Field>, SP1Field, Felt<SP1Field>)
Divides a field immediate and a field element (felt = field imm / felt).
DivE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Divides two extension field elements (ext = ext / ext).
DivEI(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Divides an extension field element and an extension field immediate (ext = ext / ext field imm).
DivEIN(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField, Ext<SP1Field, SP1ExtensionField>)
Divides and extension field immediate and an extension field element (ext = ext field imm / ext).
DivEF(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)
Divides an extension field element and a field element (ext = ext / felt).
NegV(Var<C::N>, Var<C::N>)
Negates a variable (var = -var).
NegF(Felt<SP1Field>, Felt<SP1Field>)
Negates a field element (felt = -felt).
NegE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Negates an extension field element (ext = -ext).
InvV(Var<C::N>, Var<C::N>)
Inverts a variable (var = 1 / var).
InvF(Felt<SP1Field>, Felt<SP1Field>)
Inverts a field element (felt = 1 / felt).
InvE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Inverts an extension field element (ext = 1 / ext).
Select(Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Selects order of felts based on a bit (should_swap, first result, second result, first input, second input)
AssertEqV(Var<C::N>, Var<C::N>)
Assert that two variables are equal (var == var).
AssertNeV(Var<C::N>, Var<C::N>)
Assert that two variables are not equal (var != var).
AssertEqF(Felt<SP1Field>, Felt<SP1Field>)
Assert that two field elements are equal (felt == felt).
AssertNeF(Felt<SP1Field>, Felt<SP1Field>)
Assert that two field elements are not equal (felt != felt).
AssertEqE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Assert that two extension field elements are equal (ext == ext).
AssertNeE(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Assert that two extension field elements are not equal (ext != ext).
AssertEqVI(Var<C::N>, C::N)
Assert that a variable is equal to an immediate (var == imm).
AssertNeVI(Var<C::N>, C::N)
Assert that a variable is not equal to an immediate (var != imm).
AssertEqFI(Felt<SP1Field>, SP1Field)
Assert that a field element is equal to a field immediate (felt == field imm).
AssertNeFI(Felt<SP1Field>, SP1Field)
Assert that a field element is not equal to a field immediate (felt != field imm).
AssertEqEI(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Assert that an extension field element is equal to an extension field immediate (ext == ext field imm).
AssertNeEI(Ext<SP1Field, SP1ExtensionField>, SP1ExtensionField)
Assert that an extension field element is not equal to an extension field immediate (ext != ext field imm).
ReduceE(Ext<SP1Field, SP1ExtensionField>)
Force reduction of field elements in circuit.
CircuitNum2BitsV(Var<C::N>, usize, Vec<Var<C::N>>)
Decompose a variable into size bits (bits = num2bits(var, size)). Should only be used when target is a gnark circuit.
CircuitNum2BitsF(Felt<SP1Field>, Vec<Var<C::N>>)
Decompose a field element into bits (bits = num2bits(felt)). Should only be used when target is a gnark circuit.
CircuitFelt2Var(Felt<SP1Field>, Var<C::N>)
Convert a Felt to a Var in a circuit. Avoids decomposing to bits and then reconstructing.
Poseidon2ExternalLinearLayer(Box<([Ext<SP1Field, SP1ExtensionField>; 4], [Ext<SP1Field, SP1ExtensionField>; 4])>)
Performs the external linear layer of Poseidon2.
Poseidon2InternalLinearLayer(Box<([Ext<SP1Field, SP1ExtensionField>; 4], [Ext<SP1Field, SP1ExtensionField>; 4])>)
Performs the internal linear layer of Poseidon2.
Poseidon2ExternalSBOX(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Performs the external SBOX mapping for Poseidon2 in a batch.
Poseidon2InternalSBOX(Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Performs the internal SBOX mapping for Poseidon2 in a batch.
CircuitPoseidon2Permute([Var<C::N>; 3])
Permutes an array of Bn254 elements using Poseidon2 (output = p2_permute(array)). Should only be used when target is a gnark circuit.
CircuitPoseidon2PermuteKoalaBear(Box<[Felt<SP1Field>; 16]>)
Permutates an array of SP1Field elements in the circuit.
CircuitV2Poseidon2PermuteKoalaBear(Box<([Felt<SP1Field>; 16], [Felt<SP1Field>; 16])>)
Permutates an array of SP1Field elements in the circuit using the skinny precompile.
CircuitV2CommitPublicValues(Box<RecursionPublicValues<Felt<SP1Field>>>)
Commits the public values.
CircuitV2HintBitsF(Vec<Felt<SP1Field>>, Felt<SP1Field>)
Decompose hint operation of a field element into an array. (output = num2bits(felt)).
PrintV(Var<C::N>)
Prints a variable.
PrintF(Felt<SP1Field>)
Prints a field element.
PrintE(Ext<SP1Field, SP1ExtensionField>)
Prints an extension field element.
Error()
Throws an error.
CircuitV2HintFelts(Felt<SP1Field>, usize)
Hint an array of field elements.
CircuitV2HintExts(Ext<SP1Field, SP1ExtensionField>, usize)
Hint an array of extension field elements.
WitnessVar(Var<C::N>, u32)
Witness a variable. Should only be used when target is a gnark circuit.
WitnessFelt(Felt<SP1Field>, u32)
Witness a field element. Should only be used when target is a gnark circuit.
WitnessExt(Ext<SP1Field, SP1ExtensionField>, u32)
Witness an extension field element. Should only be used when target is a gnark circuit.
Commit(Felt<SP1Field>, Var<C::N>)
Label a field element as the ith public input.
CircuitCommitVkeyHash(Var<C::N>)
Asserts that the inputted var is equal the circuit’s vkey hash public input. Should only be used when target is a gnark circuit.
CircuitCommitCommittedValuesDigest(Var<C::N>)
Asserts that the inputted var is equal the circuit’s committed values digest public input. Should only be used when target is a gnark circuit.
CircuitCommitExitCode(Var<C::N>)
Asserts that the inputted var is equal the circuit’s exit code public input. Should only be used when target is a gnark circuit.
CircuitCommitVkRoot(Var<C::N>)
Asserts that the inputted var is equal the circuit’s vk root public input. Should only be used when target is a gnark circuit.
CircuitCommitProofNonce(Var<C::N>)
Asserts that the inputted var is equal the circuit’s proof nonce public input. Should only be used when target is a gnark circuit.
CircuitV2HintAddCurve(Box<(SepticCurve<Felt<SP1Field>>, SepticCurve<Felt<SP1Field>>, SepticCurve<Felt<SP1Field>>)>)
Adds two elliptic curve points. (sum, point_1, point_2).
CircuitV2PrefixSumChecks(Box<(Felt<SP1Field>, Ext<SP1Field, SP1ExtensionField>, Vec<Ext<SP1Field, SP1ExtensionField>>, Vec<Felt<SP1Field>>, Vec<Felt<SP1Field>>, Vec<Ext<SP1Field, SP1ExtensionField>>)>)
Executes full lagrange eval as well as computes field element that corresponds to input bit representation.
CircuitSelectV(Var<C::N>, Var<C::N>, Var<C::N>, Var<C::N>)
Select’s a variable based on a condition. (select(cond, true_val, false_val) => output). Should only be used when target is a gnark circuit.
CircuitSelectF(Var<C::N>, Felt<SP1Field>, Felt<SP1Field>, Felt<SP1Field>)
Select’s a field element based on a condition. (select(cond, true_val, false_val) => output). Should only be used when target is a gnark circuit.
CircuitSelectE(Var<C::N>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Select’s an extension field element based on a condition. (select(cond, true_val, false_val) => output). Should only be used when target is a gnark circuit.
CircuitExt2Felt([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>)
Converts an ext to a slice of felts. Should only be used when target is a gnark circuit.
CircuitFelts2Ext([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>)
Converts a slice of felts to an ext. Should only be used when target is a gnark circuit.
EqEval(Felt<SP1Field>, Ext<SP1Field, SP1ExtensionField>, Ext<SP1Field, SP1ExtensionField>)
Evaluates a single eq computation, while verifying that the first element is a bit.
Should only be used when target is a gnark circuit.
CircuitChipExt2Felt([Felt<SP1Field>; 4], Ext<SP1Field, SP1ExtensionField>)
Converts a slice of felts to an ext, using a chip. Should be used for wrap.
CircuitChipFelt2Ext(Ext<SP1Field, SP1ExtensionField>, [Felt<SP1Field>; 4])
Converts an ext to a slice of felts, using a chip. Should be used for wrap.
CycleTrackerV2Enter(Cow<'static, str>)
Tracks the number of cycles used by a block of code annotated by the string input.
CycleTrackerV2Exit
Tracks the number of cycles used by a block of code annotated by the string input.
Parallel(Vec<DslIrBlock<C>>)
Blocks that may be executed in parallel.
DebugBacktrace(Backtrace)
Pass a backtrace for debugging.
Trait Implementations§
Auto Trait Implementations§
impl<C> Freeze for DslIr<C>
impl<C> RefUnwindSafe for DslIr<C>
impl<C> Send for DslIr<C>
impl<C> Sync for DslIr<C>
impl<C> Unpin for DslIr<C>
impl<C> UnsafeUnpin for DslIr<C>
impl<C> UnwindSafe for DslIr<C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F, EF, E> ExtensionOperand<F, EF> for E
impl<F, EF, E> ExtensionOperand<F, EF> for E
fn to_operand(self) -> ExtOperand<F, EF>
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<Challenger, A> FromChallenger<Challenger, A> for Challengerwhere
Challenger: Clone,
impl<Challenger, A> FromChallenger<Challenger, A> for Challengerwhere
Challenger: Clone,
fn from_challenger(challenger: &Challenger, _backend: &A) -> Challenger
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.