Crate hydroflow

source ·
Expand description

Hydroflow is a low-level dataflow-based runtime system for the Hydro Project.

The primary item in this crate is the Hydroflow struct, representing a Hydroflow dataflow graph. Although this graph can be manually constructed, the easiest way to instantiate a Hydroflow instance is with the hydroflow_syntax! macro using Hydroflow’s custom “surface syntax.”

let mut hf = hydroflow::hydroflow_syntax! {
    source_iter(["hello", "world"]) -> for_each(|s| println!("{}", s));
};
hf.run_available();

For more examples, check out the examples folder on Github.

Re-exports

  • pub use variadics;
  • pub use bincode;
  • pub use bytes;
  • pub use futures;
  • pub use itertools;
  • pub use lattices;
  • pub use pusherator;
  • pub use rustc_hash;
  • pub use serde;
  • pub use serde_json;
  • pub use tokio;
  • pub use tokio_stream;
  • pub use tokio_util;

Modules

  • Hydroflow’s inner (intra-subgraph) compiled layer.
  • Hydroflow lattice and flow properties, very WIP.
  • Hydroflow’s outer scheduled layer. Deals with inter-subgraph runtime data-passing and scheduling.
  • Helper utilities for the Hydroflow surface syntax.

Macros

  • Asserts that the variable’s type implements the given traits.
  • Generate a Hydroflow instance from Datalog code.
  • Parse Hydroflow “surface syntax” without emitting code.
  • Create a Hydroflow instance using Hydroflow’s custom “surface syntax.”
  • hydroflow_syntax! but will not emit any diagnostics (errors, warnings, etc.).
  • assert! but returns a [Result<(), String>] instead of panicking.
  • assert_eq! but returns a [Result<(), String>] instead of panicking.
  • Macro for pattern-matching with variadic tuples. This is mainly used for function arguments, but it can also be used in match, if let ..., and let ... else expressions.
  • Macro creating a variadic tuple value from a list of expressions.
  • Macro creating a variadic tuple type from a list of types.

Enums

Attribute Macros