1 unstable release
| 0.1.0 | Aug 11, 2024 |
|---|
#372 in Science
26KB
616 lines
Choice
An implementation of affine addative conjunction in the rust type system.
This can be used to group mutually exclusive function parameters so that they can have overlapping captures.
Usage
The following code using Result does not work as it
Ok(0)
.map(|x: i32| sender.send(x + 1))
.map_err(|y: i32| sender.send(y - 1));
//! ^^^^^^^^ use of moved value: `sender`
Whereas using Either and passing a Choice of two functions circumvents this issues by storing the two branches in the same object.
Either::Left(0).choose_map(Exclusive::new(
sender,
|s| move |x: i32| s.send(x + 1),
|s| move |y: i32| s.send(y - 1),
));
Dependencies
~150–560KB
~13K SLoC