Struct dfir_lang::graph::ops::OperatorConstraints
source · pub struct OperatorConstraints {Show 16 fields
pub name: &'static str,
pub categories: &'static [OperatorCategory],
pub hard_range_inn: &'static dyn RangeTrait<usize>,
pub soft_range_inn: &'static dyn RangeTrait<usize>,
pub hard_range_out: &'static dyn RangeTrait<usize>,
pub soft_range_out: &'static dyn RangeTrait<usize>,
pub num_args: usize,
pub persistence_args: &'static dyn RangeTrait<usize>,
pub type_args: &'static dyn RangeTrait<usize>,
pub is_external_input: bool,
pub has_singleton_output: bool,
pub flo_type: Option<FloType>,
pub ports_inn: Option<fn() -> PortListSpec>,
pub ports_out: Option<fn() -> PortListSpec>,
pub input_delaytype_fn: fn(_: &PortIndexValue) -> Option<DelayType>,
pub write_fn: WriteFn,
}
Expand description
An instance of this struct represents a single dfir operator.
Fields§
§name: &'static str
Operator’s name.
categories: &'static [OperatorCategory]
Operator categories, for docs.
hard_range_inn: &'static dyn RangeTrait<usize>
Input argument range required to not show an error.
soft_range_inn: &'static dyn RangeTrait<usize>
Input argument range required to not show a warning.
hard_range_out: &'static dyn RangeTrait<usize>
Output argument range required to not show an error.
soft_range_out: &'static dyn RangeTrait<usize>
Output argument range required to not show an warning.
num_args: usize
Number of arguments i.e. operator(a, b, c)
has num_args = 3
.
persistence_args: &'static dyn RangeTrait<usize>
How many persistence lifetime arguments can be provided.
type_args: &'static dyn RangeTrait<usize>
How many generic type arguments can be provided.
is_external_input: bool
If this operator receives external inputs and therefore must be in stratum 0.
has_singleton_output: bool
If this operator has a singleton reference output. For stateful operators.
If true, WriteContextArgs::singleton_output_ident
will be set to a meaningful value in
the Self::write_fn
invocation.
flo_type: Option<FloType>
Flo semantics type.
ports_inn: Option<fn() -> PortListSpec>
What named or numbered input ports to expect?
ports_out: Option<fn() -> PortListSpec>
What named or numbered output ports to expect?
input_delaytype_fn: fn(_: &PortIndexValue) -> Option<DelayType>
Determines if this input must be preceeded by a stratum barrier.
write_fn: WriteFn
The operator’s codegen. Returns code that is emited is several different locations. See OperatorWriteOutput
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for OperatorConstraints
impl !RefUnwindSafe for OperatorConstraints
impl Send for OperatorConstraints
impl Sync for OperatorConstraints
impl Unpin for OperatorConstraints
impl !UnwindSafe for OperatorConstraints
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> 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 more