This crate provides abstractions over data and control functors,
as described in A Tale of Two Functors or: How I Learned to Stop Worrying and Love Data and Ccontrol.
The original article takes linear types into account, but in Rust we have to do with affine types.
This difference means Option
and Result
CAN be control functors, which are not in linear case.