HydroNode

Enum HydroNode 

Source
pub enum HydroNode {
Show 38 variants Placeholder, Cast { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, ObserveNonDet { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, Source { source: HydroSource, metadata: HydroIrMetadata, }, CycleSource { ident: Ident, metadata: HydroIrMetadata, }, Tee { inner: TeeNode, metadata: HydroIrMetadata, }, Persist { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, BeginAtomic { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, EndAtomic { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, Batch { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, YieldConcat { inner: Box<HydroNode>, metadata: HydroIrMetadata, }, Chain { first: Box<HydroNode>, second: Box<HydroNode>, metadata: HydroIrMetadata, }, ChainFirst { first: Box<HydroNode>, second: Box<HydroNode>, metadata: HydroIrMetadata, }, CrossProduct { left: Box<HydroNode>, right: Box<HydroNode>, metadata: HydroIrMetadata, }, CrossSingleton { left: Box<HydroNode>, right: Box<HydroNode>, metadata: HydroIrMetadata, }, Join { left: Box<HydroNode>, right: Box<HydroNode>, metadata: HydroIrMetadata, }, Difference { pos: Box<HydroNode>, neg: Box<HydroNode>, metadata: HydroIrMetadata, }, AntiJoin { pos: Box<HydroNode>, neg: Box<HydroNode>, metadata: HydroIrMetadata, }, ResolveFutures { input: Box<HydroNode>, metadata: HydroIrMetadata, }, ResolveFuturesOrdered { input: Box<HydroNode>, metadata: HydroIrMetadata, }, Map { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, FlatMap { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, Filter { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, FilterMap { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, DeferTick { input: Box<HydroNode>, metadata: HydroIrMetadata, }, Enumerate { input: Box<HydroNode>, metadata: HydroIrMetadata, }, Inspect { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, Unique { input: Box<HydroNode>, metadata: HydroIrMetadata, }, Sort { input: Box<HydroNode>, metadata: HydroIrMetadata, }, Fold { init: DebugExpr, acc: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, Scan { init: DebugExpr, acc: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, FoldKeyed { init: DebugExpr, acc: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, Reduce { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, ReduceKeyed { f: DebugExpr, input: Box<HydroNode>, metadata: HydroIrMetadata, }, ReduceKeyedWatermark { f: DebugExpr, input: Box<HydroNode>, watermark: Box<HydroNode>, metadata: HydroIrMetadata, }, Network { serialize_fn: Option<DebugExpr>, instantiate_fn: DebugInstantiate, deserialize_fn: Option<DebugExpr>, input: Box<HydroNode>, metadata: HydroIrMetadata, }, ExternalInput { from_external_id: usize, from_key: usize, from_many: bool, codec_type: DebugType, port_hint: NetworkHint, instantiate_fn: DebugInstantiate, deserialize_fn: Option<DebugExpr>, metadata: HydroIrMetadata, }, Counter { tag: String, duration: DebugExpr, prefix: String, input: Box<HydroNode>, metadata: HydroIrMetadata, },
}
Expand description

An intermediate node in a Hydro graph, which consumes data from upstream nodes and emits data to downstream nodes.

Variants§

§

Placeholder

§

Cast

Manually “casts” between two different collection kinds.

Using this IR node requires special care, since it bypasses many of Hydro’s core correctness checks. In particular, the user must ensure that every possible “interpretation” of the input corresponds to a distinct “interpretation” of the output, where an “interpretation” is a possible output of ObserveNonDet applied to the collection. This ensures that the simulator does not miss any possible outputs.

Fields

§

ObserveNonDet

Strengthens the guarantees of a stream by non-deterministically selecting a possible interpretation of the input stream.

In production, this simply passes through the input, but in simulation, this operator explicitly selects a randomized interpretation.

Fields

§

Source

Fields

§

CycleSource

Fields

§ident: Ident
§

Tee

Fields

§inner: TeeNode
§

Persist

Fields

§

BeginAtomic

Fields

§

EndAtomic

Fields

§

Batch

Fields

§

YieldConcat

Fields

§

Chain

Fields

§second: Box<HydroNode>
§

ChainFirst

Fields

§second: Box<HydroNode>
§

CrossProduct

Fields

§

CrossSingleton

Fields

§

Join

Fields

§

Difference

Fields

§

AntiJoin

Fields

§

ResolveFutures

Fields

§

ResolveFuturesOrdered

Fields

§

Map

Fields

§

FlatMap

Fields

§

Filter

Fields

§

FilterMap

Fields

§

DeferTick

Fields

§

Enumerate

Fields

§

Inspect

Fields

§

Unique

Fields

§

Sort

Fields

§

Fold

Fields

§

Scan

Fields

§

FoldKeyed

Fields

§

Reduce

Fields

§

ReduceKeyed

Fields

§

ReduceKeyedWatermark

Fields

§watermark: Box<HydroNode>
§

Network

Fields

§serialize_fn: Option<DebugExpr>
§instantiate_fn: DebugInstantiate
§deserialize_fn: Option<DebugExpr>
§

ExternalInput

Fields

§from_external_id: usize
§from_key: usize
§from_many: bool
§codec_type: DebugType
§port_hint: NetworkHint
§instantiate_fn: DebugInstantiate
§deserialize_fn: Option<DebugExpr>
§

Counter

Fields

§duration: DebugExpr
§prefix: String

Implementations§

Source§

impl HydroNode

Source

pub fn transform_bottom_up( &mut self, transform: &mut impl FnMut(&mut HydroNode), seen_tees: &mut SeenTees, check_well_formed: bool, )

Source

pub fn transform_children( &mut self, transform: impl FnMut(&mut HydroNode, &mut SeenTees), seen_tees: &mut SeenTees, )

Source

pub fn deep_clone(&self, seen_tees: &mut SeenTees) -> HydroNode

Source

pub fn emit_core( &mut self, builders_or_callback: &mut BuildersOrCallback<'_, impl FnMut(&mut HydroRoot, &mut usize), impl FnMut(&mut HydroNode, &mut usize)>, built_tees: &mut HashMap<*const RefCell<HydroNode>, Ident>, next_stmt_id: &mut usize, ) -> Ident

Available on crate feature build only.
Source

pub fn visit_debug_expr(&mut self, transform: impl FnMut(&mut DebugExpr))

Source

pub fn op_metadata(&self) -> &HydroIrOpMetadata

Source

pub fn metadata(&self) -> &HydroIrMetadata

Source

pub fn op_metadata_mut(&mut self) -> &mut HydroIrOpMetadata

Source

pub fn metadata_mut(&mut self) -> &mut HydroIrMetadata

Source

pub fn input_metadata(&self) -> Vec<&HydroIrMetadata>

Source

pub fn print_root(&self) -> String

Source§

impl HydroNode

Source

pub fn build_graph_structure( &self, structure: &mut HydroGraphStructure, seen_tees: &mut HashMap<*const RefCell<HydroNode>, usize>, config: &HydroWriteConfig, ) -> usize

Available on crate feature viz only.

Build the graph structure recursively for this node.

Trait Implementations§

Source§

impl Debug for HydroNode

Source§

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

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

impl Hash for HydroNode

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more

Auto Trait Implementations§

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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToSinkBuild for T

Source§

fn iter_to_sink_build(self) -> SendIterBuild<Self>
where Self: Sized + Iterator,

Starts a SinkBuild adaptor chain to send all items from self as an Iterator.
Source§

fn stream_to_sink_build(self) -> SendStreamBuild<Self>
where Self: Sized + Stream,

Starts a SinkBuild adaptor chain to send all items from self as a [Stream].
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,