#[non_exhaustive]pub enum NodeTemplate {
SingleOp(OpType),
CompoundOp(Box<Hugr>),
LinkedHugr(Box<Hugr>, NameLinkingPolicy),
Call(Node, Vec<TypeArg>),
}hugr-passes is deprecated. Use tket::passes instead
Expand description
A recipe for creating a dataflow Node - as a new child of a DataflowParent
or in order to replace an existing node.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
SingleOp(OpType)
hugr-passes is deprecated. Use tket::passes instead
A single node - so if replacing an existing node, change only the op.
An error will be raised if the new op has a static inport; use Self::LinkedHugr instead.
CompoundOp(Box<Hugr>)
hugr-passes is deprecated. Use tket::passes instead
Defines a sub-Hugr whose entrypoint-subtree to insert, the entrypoint (which must be
a CFG, Conditional, DFG or TailLoop) becoming (/replacing) the desired Node.
Note 1. CompoundOp will be of limited use for polymorphic ops (before monomorphization)
because the new subtree will not be able to use type variables present in the
parent Hugr or previous op.
Edges incoming to the entrypoint subtree will be disconnected.
It is recommended to use Self::LinkedHugr instead.
LinkedHugr(Box<Hugr>, NameLinkingPolicy)
hugr-passes is deprecated. Use tket::passes instead
Defines a sub-Hugr to insert, whose entrypoint becomes (or replaces) the desired Node. Other children of the Hugr reachable from the entrypoint will also be inserted according to the specified linking policy.
Call(Node, Vec<TypeArg>)
Use LinkedHugr with Call entrypoint and FuncDecl
A Call to an existing function.
Implementations§
Source§impl NodeTemplate
impl NodeTemplate
Sourcepub fn linked_hugr(h: impl Into<Hugr>) -> Self
👎Deprecated since 0.26.2: hugr-passes is deprecated. Use tket::passes instead
pub fn linked_hugr(h: impl Into<Hugr>) -> Self
hugr-passes is deprecated. Use tket::passes instead
Creates a Self::LinkedHugr from the given Hugr with the default linking policy.
Sourcepub fn call_to_function(
func_def: Hugr,
type_args: &[TypeArg],
) -> Result<NodeTemplate, BuildError>
👎Deprecated since 0.26.2: hugr-passes is deprecated. Use tket::passes instead
pub fn call_to_function( func_def: Hugr, type_args: &[TypeArg], ) -> Result<NodeTemplate, BuildError>
hugr-passes is deprecated. Use tket::passes instead
Creates a NodeTemplate::LinkedHugr creating a call node to the given
function definition or declaration.
Returns a BuildError::UnexpectedType if the given Hugr does not have
a function definition or declaration as entrypoint.
Sourcepub fn add_hugr(
self,
hugr: &mut impl HugrMut<Node = Node>,
parent: Node,
) -> Result<Node, BuildError>
👎Deprecated since 0.26.2: hugr-passes is deprecated. Use tket::passes instead
pub fn add_hugr( self, hugr: &mut impl HugrMut<Node = Node>, parent: Node, ) -> Result<Node, BuildError>
hugr-passes is deprecated. Use tket::passes instead
Adds this instance to the specified HugrMut as a new node or subtree under a
given parent, returning the unique new child (of that parent) thus created
§Panics
- If
parentis not in thehugr
§Errors
- If
selfis aSelf::Calland the target Node either- is neither a
FuncDefnnor aFuncDecl - has a
signaturewhich the type-args of theSelf::Calldo not match
- is neither a
Sourcepub fn add(
self,
dfb: &mut impl Dataflow,
inputs: impl IntoIterator<Item = Wire>,
) -> Result<BuildHandle<DataflowOpID>, BuildError>
👎Deprecated since 0.26.2: hugr-passes is deprecated. Use tket::passes instead
pub fn add( self, dfb: &mut impl Dataflow, inputs: impl IntoIterator<Item = Wire>, ) -> Result<BuildHandle<DataflowOpID>, BuildError>
hugr-passes is deprecated. Use tket::passes instead
Adds this instance to the specified Dataflow builder as a new node or subtree
Trait Implementations§
Source§impl Clone for NodeTemplate
impl Clone for NodeTemplate
Source§fn clone(&self) -> NodeTemplate
fn clone(&self) -> NodeTemplate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NodeTemplate
impl Debug for NodeTemplate
Source§impl PartialEq for NodeTemplate
impl PartialEq for NodeTemplate
Source§fn eq(&self, other: &NodeTemplate) -> bool
fn eq(&self, other: &NodeTemplate) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for NodeTemplate
Auto Trait Implementations§
impl !RefUnwindSafe for NodeTemplate
impl !UnwindSafe for NodeTemplate
impl Freeze for NodeTemplate
impl Send for NodeTemplate
impl Sync for NodeTemplate
impl Unpin for NodeTemplate
impl UnsafeUnpin for NodeTemplate
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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<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.