Core Effects

The list of effects provided by fx-rs will grow as new needs are discovered in Rust programs.

Current ideas for contributions:

  • Resource management (safe acquire/use/release of resources)
  • Structured concurrency (beyond manual mutex/channels)
  • Any other effectful pattern useful in Rust—issues and PRs are welcome!
#![allow(unused)]
fn main() {
// Type alias for a function effect
type StringToUsize = Fx<String, usize>;

fn length_of_string(s: String) -> usize { s.len() }

let effect: StringToUsize = Fx::func(length_of_string);
let requirement = "Hello World".to_owned();
let provided = effect.provide(requirement.clone());
let result: usize = provided.eval();
assert_eq!(result, requirement.len()); // result: usize
}