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 hydroflow_lang as lang;
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;
pub use tracing;
pub use web_time;
Modules§
- Hydroflow’s inner (intra-subgraph) compiled layer.
- 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.
- Tests that the given warnings are emitted by the hydroflow macro invocation.
- 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.).- Checks that the given closure is a monotonic function. For now does nothing.
- Checks that the given closure is a morphism. For now does nothing.
assert!
but returns a [Result<(), String>
] instead of panicking.assert_eq!
but returns a [Result<(), String>
] instead of panicking.- Variadic patterns macro.
- Variadic expressions (values) macro.
- Variadic types macro.