dewit 0.0.1

Define scheduling and execution of code separately from data flow
Documentation
//! Reified execution flow.

macro_rules! go_impl {
    ($LT:lifetime, $I:ty, $O:ty) => {
        #[cfg(feature = "blocking")]
        #[inline(always)]
        fn go_blocking(
            self,
            mode: &$LT crate::mode::runtime::Blocking,
            input: $I,
        ) -> crate::task::TaskOutput<$LT, crate::mode::runtime::Blocking, $O> {
            Task::go::<crate::mode::runtime::Blocking>(self, mode, input)
        }

        #[cfg(feature = "async")]
        #[inline(always)]
        fn go_async(
            self,
            mode: &$LT crate::mode::runtime::Async,
            input: $I,
        ) -> crate::task::TaskOutput<$LT, crate::mode::runtime::Async, $O>
        where
            $LT: 'static,
        {
            Task::go::<crate::mode::runtime::Async>(self, mode, input)
        }
    };
}

// top level combinators that bring computation into the task system

mod blocking;
pub use blocking::*;
mod cpu;
pub use cpu::*;
mod io;
pub use io::*;

// combinators that combine tasks together in a non-linear fashion

mod join;
pub use join::*;

// combinators that combine tasks together in a linear fashion

mod then;
pub use then::*;
mod map;
pub use map::*;
mod and_then;
pub use and_then::*;