prism3_function/
lib.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025.
4 *    3-Prism Co. Ltd.
5 *
6 *    All rights reserved.
7 *
8 ******************************************************************************/
9//! # Prism3 Function
10//!
11//! Provides functional programming abstractions for Rust, including:
12//!
13//! - **Transformer types**: Transform values from type T to type R
14//! - **UnaryOperator types**: Transform values of type T to the same type T
15//! - **BiTransformer types**: Transform two values to produce a result
16//! - **BinaryOperator types**: Transform two values of type T to produce a T
17//! - **Consumer types**: Functions that consume values without returning
18//! - **BiConsumer types**: Functions that consume two values without returning
19//! - **Predicate types**: Functions that test values and return boolean
20//! - **BiPredicate types**: Functions that test two values and return boolean
21//! - **Supplier types**: Functions that produce values without input
22//! - **Comparator types**: Functions that compare values and return ordering
23//!
24//! # Author
25//!
26//! Haixing Hu
27
28pub mod bi_consumer;
29pub mod bi_consumer_once;
30pub mod bi_predicate;
31pub mod bi_transformer;
32pub mod bi_transformer_once;
33pub mod comparator;
34pub mod consumer;
35pub mod consumer_once;
36pub mod mutator;
37pub mod mutator_once;
38pub mod predicate;
39pub mod readonly_bi_consumer;
40pub mod readonly_consumer;
41pub mod supplier;
42pub mod supplier_once;
43pub mod transformer;
44pub mod transformer_once;
45
46pub use bi_consumer::{ArcBiConsumer, BiConsumer, BoxBiConsumer, FnBiConsumerOps, RcBiConsumer};
47pub use bi_consumer_once::{BiConsumerOnce, BoxBiConsumerOnce, FnBiConsumerOnceOps};
48pub use bi_predicate::{
49    ArcBiPredicate, BiPredicate, BoxBiPredicate, FnBiPredicateOps, RcBiPredicate,
50};
51pub use bi_transformer::{
52    ArcBiTransformer, ArcBinaryOperator, BiTransformer, BinaryOperator, BoxBiTransformer,
53    BoxBinaryOperator, FnBiTransformerOps, RcBiTransformer, RcBinaryOperator,
54};
55pub use bi_transformer_once::{
56    BiTransformerOnce, BinaryOperatorOnce, BoxBiTransformerOnce, BoxBinaryOperatorOnce,
57    FnBiTransformerOnceOps,
58};
59pub use comparator::{ArcComparator, BoxComparator, Comparator, FnComparatorOps, RcComparator};
60pub use consumer::{ArcConsumer, BoxConsumer, Consumer, FnConsumerOps, RcConsumer};
61pub use consumer_once::{BoxConsumerOnce, ConsumerOnce, FnConsumerOnceOps};
62pub use mutator::{
63    ArcConditionalMutator, ArcMutator, BoxConditionalMutator, BoxMutator, FnMutatorOps, Mutator,
64    RcConditionalMutator, RcMutator,
65};
66pub use mutator_once::{BoxConditionalMutatorOnce, BoxMutatorOnce, FnMutatorOnceOps, MutatorOnce};
67pub use predicate::{ArcPredicate, BoxPredicate, FnPredicateOps, Predicate, RcPredicate};
68pub use readonly_bi_consumer::{
69    ArcReadonlyBiConsumer, BoxReadonlyBiConsumer, FnReadonlyBiConsumerOps, RcReadonlyBiConsumer,
70    ReadonlyBiConsumer,
71};
72pub use readonly_consumer::{
73    ArcReadonlyConsumer, BoxReadonlyConsumer, FnReadonlyConsumerOps, RcReadonlyConsumer,
74    ReadonlyConsumer,
75};
76pub use supplier::{ArcSupplier, BoxSupplier, RcSupplier, Supplier};
77pub use supplier_once::{BoxSupplierOnce, SupplierOnce};
78pub use transformer::{
79    ArcConditionalTransformer, ArcTransformer, ArcUnaryOperator, BoxConditionalTransformer,
80    BoxTransformer, BoxUnaryOperator, FnTransformerOps, RcConditionalTransformer, RcTransformer,
81    RcUnaryOperator, Transformer, UnaryOperator,
82};
83pub use transformer_once::{
84    BoxConditionalTransformerOnce, BoxTransformerOnce, BoxUnaryOperatorOnce, FnTransformerOnceOps,
85    TransformerOnce, UnaryOperatorOnce,
86};