rust2fun/
lib.rs

1//! A library for functional programming in Rust
2
3#![no_std]
4#![deny(missing_docs)]
5#![allow(clippy::too_many_arguments)]
6
7extern crate rust2fun_macros;
8#[cfg(feature = "std")]
9extern crate std;
10
11#[cfg(feature = "std")]
12macro_rules! if_std {
13	( $( $code:tt )* ) => {
14		$( $code )*
15	}
16}
17
18#[cfg(not(feature = "std"))]
19macro_rules! if_std {
20    ( $( $code:tt )* ) => {};
21}
22
23pub mod and_then;
24pub mod ap_n;
25pub mod applicative;
26pub mod apply;
27pub mod bifunctor;
28pub mod combinator;
29pub mod contravariant;
30pub mod data;
31pub mod flatmap;
32pub mod functor;
33pub mod higher;
34pub mod invariant;
35pub mod map_n;
36pub mod monad;
37pub mod monoid;
38pub mod pure;
39pub mod semigroup;
40pub mod semigroupal;
41
42/// Convenience re-export of common members of the library.
43pub mod prelude {
44    pub use crate::and_then::*;
45    pub use crate::ap_n::*;
46    pub use crate::applicative::*;
47    pub use crate::apply::*;
48    pub use crate::bifunctor::*;
49    pub use crate::combinator::*;
50    pub use crate::contravariant::*;
51    pub use crate::data::*;
52    pub use crate::flatmap::*;
53    pub use crate::functor::*;
54    pub use crate::higher::*;
55    pub use crate::invariant::*;
56    pub use crate::map_n::*;
57    pub use crate::monad::*;
58    pub use crate::monoid::*;
59    pub use crate::pure::*;
60    pub use crate::semigroup::*;
61    pub use crate::semigroupal::*;
62    pub use crate::*;
63}