1 unstable release
0.1.0 | Aug 11, 2024 |
---|
#7 in #exclusive
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
~1.5MB
~38K SLoC