1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//!
//! Prelude: Wrapper Types
//!
//! This module re-exports various wrapper types from Rustica to make them available in a single import.
//!
//! # Key Wrapper Types
//!
//! - [`First`], [`Last`]: First/last priority wrappers (useful for Monoid/Ord operations)
//! - [`Max`], [`Min`]: Maximum/minimum value wrappers
//! - [`Product`], [`Sum`]: Product/sum wrappers (numeric Monoids)
//! - [`Memoizer`]: Memoization wrappers
//! - [`Thunk`]: Lazy evaluation wrapper
//! - [`Value`]: Simple value wrapper
//!
//! # Usage Examples
//!
//! ```rust
//! use rustica::prelude::wrapper::*;
//! use rustica::traits::semigroup::Semigroup;
//!
//! let a = Sum(3);
//! let b = Sum(4);
//! assert_eq!(*a.combine(&b).value(), 7);
//!
//! let m = Max(10);
//! let n = Max(20);
//! assert_eq!(*m.combine(&n).value(), 20);
//! ```
//!
//! # Note
//!
//! Wrapper types provide powerful abstractions when used with [`Monoid`], [`Semigroup`], etc.
pub use crate First;
pub use crate Last;
pub use crate Max;
pub use crate Memoizer;
pub use crate Min;
pub use crate Product;
pub use crate Sum;
pub use crate Thunk;
pub use crate Value;
// Also re-export commonly used traits
pub use crate Evaluate;
pub use crate Functor;
pub use crate Identity;
pub use crate Monoid;
pub use crate Semigroup;