Skip to main content

fp_library/
classes.rs

1//! Defines traits for common algebraic structures and functional abstractions,
2//! such as [`Functor`], [`Applicative`] and [`Monad`].
3//!
4//! Traits representing higher-kinded types (e.g., `Functor`) are implemented by
5//! [`Brand` types][crate::brands] to simulate higher-kinded polymorphism, as Rust does not
6//! natively support it.
7
8pub mod alt;
9pub mod alternative;
10pub mod applicative;
11pub mod apply_first;
12pub mod apply_second;
13pub mod arrow;
14pub mod bifoldable;
15pub mod bifunctor;
16pub mod bitraversable;
17pub mod category;
18pub mod clone_fn;
19pub mod commutative_ring;
20pub mod comonad;
21pub mod compactable;
22pub mod contravariant;
23pub mod deferrable;
24pub mod division_ring;
25pub mod euclidean_ring;
26pub mod extend;
27pub mod extract;
28pub mod field;
29pub mod filterable;
30pub mod filterable_with_index;
31pub mod foldable;
32pub mod foldable_with_index;
33pub mod functor;
34pub mod functor_with_index;
35pub mod heyting_algebra;
36pub mod lazy_config;
37pub mod lift;
38pub mod monad;
39pub mod monad_plus;
40pub mod monad_rec;
41pub mod monoid;
42pub mod natural_transformation;
43pub mod optics;
44pub mod par_compactable;
45pub mod par_filterable;
46pub mod par_filterable_with_index;
47pub mod par_foldable;
48pub mod par_foldable_with_index;
49pub mod par_functor;
50pub mod par_functor_with_index;
51pub mod par_ref_filterable;
52pub mod par_ref_filterable_with_index;
53pub mod par_ref_foldable;
54pub mod par_ref_foldable_with_index;
55pub mod par_ref_functor;
56pub mod par_ref_functor_with_index;
57pub mod pipe;
58pub mod plus;
59pub mod pointed;
60pub mod pointer;
61pub mod profunctor;
62pub mod ref_alt;
63pub mod ref_applicative;
64pub mod ref_apply_first;
65pub mod ref_apply_second;
66pub mod ref_bifoldable;
67pub mod ref_bifunctor;
68pub mod ref_bitraversable;
69pub mod ref_compactable;
70pub mod ref_counted_pointer;
71pub mod ref_filterable;
72pub mod ref_filterable_with_index;
73pub mod ref_foldable;
74pub mod ref_foldable_with_index;
75pub mod ref_functor;
76pub mod ref_functor_with_index;
77pub mod ref_lift;
78pub mod ref_monad;
79pub mod ref_pointed;
80pub mod ref_semiapplicative;
81pub mod ref_semimonad;
82pub mod ref_traversable;
83pub mod ref_traversable_with_index;
84pub mod ref_witherable;
85pub mod ring;
86pub mod semiapplicative;
87pub mod semigroup;
88pub mod semigroupoid;
89pub mod semimonad;
90pub mod semiring;
91pub mod send_clone_fn;
92pub mod send_deferrable;
93pub mod send_ref_applicative;
94pub mod send_ref_apply_first;
95pub mod send_ref_apply_second;
96pub mod send_ref_counted_pointer;
97pub mod send_ref_foldable;
98pub mod send_ref_foldable_with_index;
99pub mod send_ref_functor;
100pub mod send_ref_functor_with_index;
101pub mod send_ref_lift;
102pub mod send_ref_monad;
103pub mod send_ref_pointed;
104pub mod send_ref_semiapplicative;
105pub mod send_ref_semimonad;
106pub mod to_dyn_clone_fn;
107pub mod to_dyn_fn;
108pub mod to_dyn_send_fn;
109pub mod traversable;
110pub mod traversable_with_index;
111pub mod with_index;
112pub mod witherable;
113
114// Automatically re-export all traits defined in submodules.
115fp_macros::generate_trait_re_exports!("src/classes", {});