Struct DFGBuilder

Source
pub struct DFGBuilder<T> { /* private fields */ }
Expand description

Builder for a ops::DFG node.

Implementations§

Source§

impl DFGBuilder<Hugr>

Source

pub fn new(signature: Signature) -> Result<DFGBuilder<Hugr>, BuildError>

Begin building a new DFG-rooted HUGR given its inputs, outputs, and extension delta.

§Errors

Error in adding DFG child nodes.

Trait Implementations§

Source§

impl<T: Clone> Clone for DFGBuilder<T>

Source§

fn clone(&self) -> DFGBuilder<T>

Returns a duplicate 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<T: AsMut<Hugr> + AsRef<Hugr>> Container for DFGBuilder<T>

Source§

fn container_node(&self) -> Node

The container node.
Source§

fn hugr_mut(&mut self) -> &mut Hugr

The underlying Hugr being built
Source§

fn hugr(&self) -> &Hugr

Immutable reference to HUGR being built
Source§

fn add_child_node(&mut self, node: impl Into<OpType>) -> Node

Add an OpType as the final child of the container. Read more
Source§

fn add_other_wire(&mut self, src: Node, dst: Node) -> Wire

Adds a non-dataflow edge between two nodes. The kind is given by the operation’s other_inputs or other_outputs
Source§

fn add_constant(&mut self, constant: impl Into<Const>) -> ConstID

Add a constant value to the container and return a handle to it. Read more
Source§

fn add_hugr(&mut self, child: Hugr) -> InsertionResult

Insert a HUGR as a child of the container.
Source§

fn add_hugr_view<H: HugrView>( &mut self, child: &H, ) -> InsertionResult<H::Node, Node>

Insert a copy of a HUGR as a child of the container.
Source§

fn set_metadata(&mut self, key: impl AsRef<str>, meta: impl Into<NodeMetadata>)

Add metadata to the container node.
Source§

fn set_child_metadata( &mut self, child: Node, key: impl AsRef<str>, meta: impl Into<NodeMetadata>, )

Add metadata to a child node. Read more
Source§

fn use_extension(&mut self, ext: impl Into<Arc<Extension>>)

Add an extension to the set of extensions used by the hugr.
Source§

fn use_extensions<Reg>(&mut self, registry: impl IntoIterator<Item = Reg>)

Extend the set of extensions used by the hugr with the extensions in the registry.
Source§

impl<T: AsMut<Hugr> + AsRef<Hugr>> Dataflow for DFGBuilder<T>

Source§

fn num_inputs(&self) -> usize

Return the number of inputs to the dataflow sibling graph.
Source§

fn io(&self) -> [Node; 2]

Return indices of input and output nodes.
Source§

fn input(&self) -> BuildHandle<DataflowOpID>

Handle to input node.
Source§

fn output(&self) -> DataflowOpID

Handle to output node.
Source§

fn input_wires(&self) -> Outputs

Return iterator over all input Value wires.
Source§

fn add_dataflow_op( &mut self, nodetype: impl Into<OpType>, input_wires: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Add a dataflow OpType to the sibling graph, wiring up the input_wires to the incoming ports of the resulting node. Read more
Source§

fn add_hugr_with_wires( &mut self, hugr: Hugr, input_wires: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Insert a hugr-defined op to the sibling graph, wiring up the input_wires to the incoming ports of the resulting root node. Read more
Source§

fn add_hugr_view_with_wires( &mut self, hugr: &impl HugrView, input_wires: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Copy a hugr-defined op into the sibling graph, wiring up the input_wires to the incoming ports of the resulting root node. Read more
Source§

fn set_outputs( &mut self, output_wires: impl IntoIterator<Item = Wire>, ) -> Result<(), BuildError>

Wire up the output_wires to the input ports of the Output node. Read more
Source§

fn input_wires_arr<const N: usize>(&self) -> [Wire; N]

Return an array of the input wires. Read more
Source§

fn dfg_builder( &mut self, signature: Signature, input_wires: impl IntoIterator<Item = Wire>, ) -> Result<DFGBuilder<&mut Hugr>, BuildError>

Return a builder for a crate::ops::DFG node, i.e. a nested dataflow subgraph, given a signature describing its input and output types and extension delta, and the input wires (which must match the input types) Read more
Source§

fn dfg_builder_endo( &mut self, inputs: impl IntoIterator<Item = (Type, Wire)>, ) -> Result<DFGBuilder<&mut Hugr>, BuildError>

Return a builder for a crate::ops::DFG node, i.e. a nested dataflow subgraph, that is endomorphic (the output types are the same as the input types). The inputs must be an iterable over pairs of the type of the input and the corresponding wire.
Source§

fn cfg_builder( &mut self, inputs: impl IntoIterator<Item = (Type, Wire)>, output_types: TypeRow, ) -> Result<CFGBuilder<&mut Hugr>, BuildError>

Return a builder for a crate::ops::CFG node, i.e. a nested controlflow subgraph. The inputs must be an iterable over pairs of the type of the input and the corresponding wire. The output_types are the types of the outputs. Read more
Source§

fn load_const(&mut self, cid: &ConstID) -> Wire

Load a static constant and return the local dataflow wire for that constant. Adds a OpType::LoadConstant node.
Source§

fn add_load_const(&mut self, constant: impl Into<Const>) -> Wire

Load a static constant and return the local dataflow wire for that constant. Adds a ops::Const and a ops::LoadConstant node.
Source§

fn add_load_value(&mut self, constant: impl Into<Value>) -> Wire

Load a ops::Value and return the local dataflow wire for that constant. Adds a ops::Const and a ops::LoadConstant node.
Source§

fn load_func<const DEFINED: bool>( &mut self, fid: &FuncID<DEFINED>, type_args: &[TypeArg], ) -> Result<Wire, BuildError>

Load a static function and return the local dataflow wire for that function. Adds a OpType::LoadFunction node. Read more
Source§

fn tail_loop_builder( &mut self, just_inputs: impl IntoIterator<Item = (Type, Wire)>, inputs_outputs: impl IntoIterator<Item = (Type, Wire)>, just_out_types: TypeRow, ) -> Result<TailLoopBuilder<&mut Hugr>, BuildError>

Return a builder for a crate::ops::TailLoop node. The inputs must be an iterable over pairs of the type of the input and the corresponding wire. The output_types are the types of the outputs. Read more
Source§

fn conditional_builder( &mut self, (sum_rows, sum_wire): (impl IntoIterator<Item = TypeRow>, Wire), other_inputs: impl IntoIterator<Item = (Type, Wire)>, output_types: TypeRow, ) -> Result<ConditionalBuilder<&mut Hugr>, BuildError>

Return a builder for a crate::ops::Conditional node. sum_input is a tuple of the type of the Sum variants and the corresponding wire. Read more
Source§

fn set_order(&mut self, before: &impl NodeHandle, after: &impl NodeHandle)

Add an order edge from before to after. Assumes any additional edges to both nodes will be Order kind.
Source§

fn get_wire_type(&self, wire: Wire) -> Result<Type, BuildError>

Get the type of a Value Wire. If not valid port or of Value kind, returns None.
Source§

fn make_tuple( &mut self, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Add a MakeTuple node and wire in the values Wires, returning the Wire corresponding to the tuple. Read more
Source§

fn make_sum( &mut self, tag: usize, variants: impl IntoIterator<Item = TypeRow>, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Add a Tag node and wire in the value Wire, to make a value with Sum type, with tag and possible types described by variants. Returns the Wire corresponding to the Sum value. Read more
Source§

fn make_continue( &mut self, tail_loop: TailLoop, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Use the wires in values to return a wire corresponding to the “Continue” variant of a ops::TailLoop with loop_signature. Read more
Source§

fn make_break( &mut self, loop_op: TailLoop, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Use the wires in values to return a wire corresponding to the “Break” variant of a ops::TailLoop with loop_signature. Read more
Source§

fn call<const DEFINED: bool>( &mut self, function: &FuncID<DEFINED>, type_args: &[TypeArg], input_wires: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Add a ops::Call node, calling function, with inputs specified by input_wires. Returns a handle to the corresponding Call node. Read more
Source§

fn as_circuit( &mut self, wires: impl IntoIterator<Item = Wire>, ) -> CircuitBuilder<'_, Self>

For the vector of wires, produce a CircuitBuilder where ops can be added using indices in to the vector.
Source§

fn add_barrier( &mut self, wires: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Add a Barrier to a set of wires and return them in the same order. Read more
Source§

impl<T: Debug> Debug for DFGBuilder<T>

Source§

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

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

impl HugrBuilder for DFGBuilder<Hugr>

Source§

fn finish_hugr(self) -> Result<Hugr, ValidationError<Node>>

Finish building the HUGR, perform any validation checks and return it.
Source§

fn module_root_builder(&mut self) -> ModuleBuilder<&mut Hugr>

Allows adding definitions to the module root of which this builder is building a part
Source§

impl<T: PartialEq> PartialEq for DFGBuilder<T>

Source§

fn eq(&self, other: &DFGBuilder<T>) -> 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<T: AsMut<Hugr> + AsRef<Hugr>> SubContainer for DFGBuilder<T>

Source§

type ContainerHandle = BuildHandle<DfgID>

A handle to the finished container node, typically returned when the child graph has been finished.
Source§

fn finish_sub_container(self) -> Result<Self::ContainerHandle, BuildError>

Consume the container builder and return the handle, may perform some checks before finishing.
Source§

impl<T> StructuralPartialEq for DFGBuilder<T>

Auto Trait Implementations§

§

impl<T> Freeze for DFGBuilder<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for DFGBuilder<T>
where T: RefUnwindSafe,

§

impl<T> Send for DFGBuilder<T>
where T: Send,

§

impl<T> Sync for DFGBuilder<T>
where T: Sync,

§

impl<T> Unpin for DFGBuilder<T>
where T: Unpin,

§

impl<T> UnwindSafe for DFGBuilder<T>
where T: 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<D> ArrayOpBuilder for D
where D: Dataflow,

Source§

fn add_new_array( &mut self, elem_ty: Type, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Adds a new array operation to the dataflow graph and return the wire representing the new array. Read more
Source§

fn add_array_unpack( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Vec<Wire>, BuildError>

Adds an array unpack operation to the dataflow graph. Read more
Source§

fn add_array_clone( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array clone operation to the dataflow graph and return the wires representing the original and cloned array. Read more
Source§

fn add_array_discard( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(), BuildError>

Adds an array discard operation to the dataflow graph. Read more
Source§

fn add_array_get( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array get operation to the dataflow graph. Read more
Source§

fn add_array_set( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, value: Wire, ) -> Result<Wire, BuildError>

Adds an array set operation to the dataflow graph. Read more
Source§

fn add_array_swap( &mut self, elem_ty: Type, size: u64, input: Wire, index1: Wire, index2: Wire, ) -> Result<Wire, BuildError>

Adds an array swap operation to the dataflow graph. Read more
Source§

fn add_array_pop_left( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-left operation to the dataflow graph. Read more
Source§

fn add_array_pop_right( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-right operation to the dataflow graph. Read more
Source§

fn add_array_discard_empty( &mut self, elem_ty: Type, input: Wire, ) -> Result<(), BuildError>

Adds an operation to discard an empty array from the dataflow graph. Read more
Source§

impl<D> BArrayOpBuilder for D
where D: Dataflow,

Source§

fn add_new_borrow_array( &mut self, elem_ty: Type, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Adds a new array operation to the dataflow graph and return the wire representing the new array. Read more
Source§

fn add_borrow_array_unpack( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Vec<Wire>, BuildError>

Adds an array unpack operation to the dataflow graph. Read more
Source§

fn add_borrow_array_clone( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array clone operation to the dataflow graph and return the wires representing the original and cloned array. Read more
Source§

fn add_borrow_array_discard( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(), BuildError>

Adds an array discard operation to the dataflow graph. Read more
Source§

fn add_borrow_array_get( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array get operation to the dataflow graph. Read more
Source§

fn add_borrow_array_set( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, value: Wire, ) -> Result<Wire, BuildError>

Adds an array set operation to the dataflow graph. Read more
Source§

fn add_borrow_array_swap( &mut self, elem_ty: Type, size: u64, input: Wire, index1: Wire, index2: Wire, ) -> Result<Wire, BuildError>

Adds an array swap operation to the dataflow graph. Read more
Source§

fn add_borrow_array_pop_left( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-left operation to the dataflow graph. Read more
Source§

fn add_borrow_array_pop_right( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-right operation to the dataflow graph. Read more
Source§

fn add_borrow_array_discard_empty( &mut self, elem_ty: Type, input: Wire, ) -> Result<(), BuildError>

Adds an operation to discard an empty array from the dataflow graph. Read more
Source§

fn add_borrow_array_borrow( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds a borrow array borrow operation to the dataflow graph. Read more
Source§

fn add_borrow_array_return( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, value: Wire, ) -> Result<Wire, BuildError>

Adds a borrow array put operation to the dataflow graph. Read more
Source§

fn add_discard_all_borrowed( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(), BuildError>

Adds an operation to discard a borrow array where all elements have been borrowed. Read more
Source§

fn add_new_all_borrowed( &mut self, elem_ty: Type, size: u64, ) -> Result<Wire, BuildError>

Adds an operation to create a new empty borrowed array in the dataflow graph. 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, dest: *mut u8)

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

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DataflowHugr for T
where T: HugrBuilder + Dataflow,

Source§

fn finish_hugr_with_outputs( self, outputs: impl IntoIterator<Item = Wire>, ) -> Result<Hugr, BuildError>
where Self: Sized,

Set outputs of dataflow HUGR and return validated HUGR Read more
Source§

impl<T> DataflowSubContainer for T

Source§

fn finish_with_outputs( self, outputs: impl IntoIterator<Item = Wire>, ) -> Result<Self::ContainerHandle, BuildError>
where Self: Sized,

Set the outputs of the graph and consume the builder, while returning a handle to the parent. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<D> GenericArrayOpBuilder for D
where D: Dataflow,

Source§

fn add_new_generic_array<AK: ArrayKind>( &mut self, elem_ty: Type, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Adds a new array operation to the dataflow graph and return the wire representing the new array. Read more
Source§

fn add_generic_array_unpack<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Vec<Wire>, BuildError>

Adds an array unpack operation to the dataflow graph. Read more
Source§

fn add_generic_array_clone<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array clone operation to the dataflow graph and return the wires representing the originala and cloned array. Read more
Source§

fn add_generic_array_discard<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<(), BuildError>

Adds an array discard operation to the dataflow graph. Read more
Source§

fn add_generic_array_get<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array get operation to the dataflow graph. Read more
Source§

fn add_generic_array_set<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, value: Wire, ) -> Result<Wire, BuildError>

Adds an array set operation to the dataflow graph. Read more
Source§

fn add_generic_array_swap<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, index1: Wire, index2: Wire, ) -> Result<Wire, BuildError>

Adds an array swap operation to the dataflow graph. Read more
Source§

fn add_generic_array_pop_left<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-left operation to the dataflow graph. Read more
Source§

fn add_generic_array_pop_right<AK: ArrayKind>( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-right operation to the dataflow graph. Read more
Source§

fn add_generic_array_discard_empty<AK: ArrayKind>( &mut self, elem_ty: Type, input: Wire, ) -> Result<(), BuildError>

Adds an operation to discard an empty array from the dataflow graph. Read more
Source§

impl<T> Instrument for T

Source§

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

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

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

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<D> PtrOpBuilder for D
where D: Dataflow,

Source§

fn add_new_ptr(&mut self, val_wire: Wire) -> Result<Wire, BuildError>

Add a “ptr.New” op.
Source§

fn add_read_ptr(&mut self, ptr_wire: Wire, ty: Type) -> Result<Wire, BuildError>

Add a “ptr.Read” op.
Source§

fn add_write_ptr( &mut self, ptr_wire: Wire, val_wire: Wire, ) -> Result<(), BuildError>

Add a “ptr.Write” op.
Source§

impl<T> StaticArrayOpBuilder for T
where T: Dataflow,

Source§

fn add_static_array_get( &mut self, elem_ty: Type, array: Wire, index: Wire, ) -> Result<Wire, BuildError>

Adds a get operation to retrieve an element from a static array. Read more
Source§

fn add_static_array_len( &mut self, elem_ty: Type, array: Wire, ) -> Result<Wire, BuildError>

Adds a len operation to get the length of a static array. Read more
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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<D> UnwrapBuilder for D
where D: Dataflow,

Source§

fn add_panic( &mut self, err: ConstError, output_row: impl IntoIterator<Item = Type>, inputs: impl IntoIterator<Item = (Wire, Type)>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>

Add a panic operation to the dataflow with the given error.
Source§

fn build_unwrap_sum<const N: usize>( &mut self, tag: usize, sum_type: SumType, input: Wire, ) -> Result<[Wire; N], BuildError>

Build an unwrap operation for a sum type to extract the variant at the given tag or panic if the tag is not the expected value.
Source§

fn build_expect_sum<const N: usize, T: Into<ConstError>>( &mut self, tag: usize, sum_type: SumType, input: Wire, error: impl FnMut(usize) -> T, ) -> Result<[Wire; N], BuildError>

Build an unwrap operation for a sum type to extract the variant at the given tag or panic with given message if the tag is not the expected value. Read more
Source§

impl<D> VArrayOpBuilder for D
where D: Dataflow,

Source§

fn add_new_value_array( &mut self, elem_ty: Type, values: impl IntoIterator<Item = Wire>, ) -> Result<Wire, BuildError>

Adds a new array operation to the dataflow graph and return the wire representing the new array. Read more
Source§

fn add_value_array_get( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, ) -> Result<(Wire, Wire), BuildError>

Adds an array get operation to the dataflow graph. Read more
Source§

fn add_value_array_set( &mut self, elem_ty: Type, size: u64, input: Wire, index: Wire, value: Wire, ) -> Result<Wire, BuildError>

Adds an array set operation to the dataflow graph. Read more
Source§

fn add_value_array_swap( &mut self, elem_ty: Type, size: u64, input: Wire, index1: Wire, index2: Wire, ) -> Result<Wire, BuildError>

Adds an array swap operation to the dataflow graph. Read more
Source§

fn add_array_pop_left( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-left operation to the dataflow graph. Read more
Source§

fn add_array_pop_right( &mut self, elem_ty: Type, size: u64, input: Wire, ) -> Result<Wire, BuildError>

Adds an array pop-right operation to the dataflow graph. Read more
Source§

fn add_array_discard_empty( &mut self, elem_ty: Type, input: Wire, ) -> Result<(), BuildError>

Adds an operation to discard an empty array from the dataflow graph. Read more
Source§

impl<'a, S, T> View<'a, &S> for T
where T: View<'a, S>, S: Copy,

Source§

fn view(module: &'a Module<'a>, id: &S) -> Option<T>

Attempt to interpret a subpart of a module as this type.
Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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