pub trait MakeExtensionOp: NamedOp {
// Required methods
fn from_extension_op(ext_op: &ExtensionOp) -> Result<Self, OpLoadError>
where Self: Sized;
fn type_args(&self) -> Vec<TypeArg>;
// Provided methods
fn from_optype(op: &OpType) -> Option<Self>
where Self: Sized { ... }
fn to_registered(
self,
extension_id: ExtensionId,
extension: Weak<Extension>,
) -> RegisteredOp<Self>
where Self: Sized { ... }
}
Expand description
Traits implemented by types which can be loaded from ExtensionOp
s,
i.e. concrete instances of OpDef
s, with defined type arguments.
Required Methods§
Sourcefn from_extension_op(ext_op: &ExtensionOp) -> Result<Self, OpLoadError>where
Self: Sized,
fn from_extension_op(ext_op: &ExtensionOp) -> Result<Self, OpLoadError>where
Self: Sized,
Try to load one of the operations of this set from an OpDef.
Provided Methods§
Sourcefn from_optype(op: &OpType) -> Option<Self>where
Self: Sized,
fn from_optype(op: &OpType) -> Option<Self>where
Self: Sized,
Try to instantiate a variant from an OpType. Default behaviour assumes an ExtensionOp and loads from the name.
Sourcefn to_registered(
self,
extension_id: ExtensionId,
extension: Weak<Extension>,
) -> RegisteredOp<Self>where
Self: Sized,
fn to_registered(
self,
extension_id: ExtensionId,
extension: Weak<Extension>,
) -> RegisteredOp<Self>where
Self: Sized,
Given the ID of the extension this operation is defined in, and a registry containing that extension, return a RegisteredOp.
Implementors§
impl MakeExtensionOp for ConvertOpType
impl MakeExtensionOp for ConcreteIntOp
impl MakeExtensionOp for ArrayOp
impl MakeExtensionOp for ArrayRepeat
impl MakeExtensionOp for ArrayScan
impl MakeExtensionOp for ListOpInst
impl MakeExtensionOp for PtrOp
impl MakeExtensionOp for LoadNat
impl MakeExtensionOp for Lift
impl MakeExtensionOp for MakeTuple
impl MakeExtensionOp for Noop
impl MakeExtensionOp for UnpackTuple
impl<T: MakeOpDef> MakeExtensionOp for T
Blanket implementation for non-polymorphic operations - OpDefs with no type parameters.