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//! - **Mapper types**: Stateful transformations from type T to type R
23//! - **Tester types**: Functions that test conditions without input
24//! - **Comparator types**: Functions that compare values and return ordering
25//!
26//! # Author
27//!
28//! Haixing Hu
29
30pub mod bi_consumer;
31pub mod bi_consumer_once;
32pub mod bi_predicate;
33pub mod bi_transformer;
34pub mod bi_transformer_once;
35pub mod comparator;
36pub mod consumer;
37pub mod consumer_once;
38pub mod mapper;
39pub mod mutator;
40pub mod mutator_once;
41pub mod predicate;
42pub mod readonly_bi_consumer;
43pub mod readonly_consumer;
44pub mod readonly_supplier;
45pub mod supplier;
46pub mod supplier_once;
47pub mod tester;
48pub mod transformer;
49pub mod transformer_once;
50
51pub use bi_consumer::{ArcBiConsumer, BiConsumer, BoxBiConsumer, FnBiConsumerOps, RcBiConsumer};
52pub use bi_consumer_once::{BiConsumerOnce, BoxBiConsumerOnce, FnBiConsumerOnceOps};
53pub use bi_predicate::{
54    ArcBiPredicate, BiPredicate, BoxBiPredicate, FnBiPredicateOps, RcBiPredicate,
55};
56pub use bi_transformer::{
57    ArcBiTransformer, ArcBinaryOperator, BiTransformer, BinaryOperator, BoxBiTransformer,
58    BoxBinaryOperator, FnBiTransformerOps, RcBiTransformer, RcBinaryOperator,
59};
60pub use bi_transformer_once::{
61    BiTransformerOnce, BinaryOperatorOnce, BoxBiTransformerOnce, BoxBinaryOperatorOnce,
62    FnBiTransformerOnceOps,
63};
64pub use comparator::{ArcComparator, BoxComparator, Comparator, FnComparatorOps, RcComparator};
65pub use consumer::{ArcConsumer, BoxConsumer, Consumer, FnConsumerOps, RcConsumer};
66pub use consumer_once::{BoxConsumerOnce, ConsumerOnce, FnConsumerOnceOps};
67pub use mapper::{
68    ArcConditionalMapper, ArcMapper, BoxConditionalMapper, BoxMapper, FnMapperOps, Mapper,
69    RcConditionalMapper, RcMapper,
70};
71pub use mutator::{
72    ArcConditionalMutator, ArcMutator, BoxConditionalMutator, BoxMutator, FnMutatorOps, Mutator,
73    RcConditionalMutator, RcMutator,
74};
75pub use mutator_once::{BoxConditionalMutatorOnce, BoxMutatorOnce, FnMutatorOnceOps, MutatorOnce};
76pub use predicate::{ArcPredicate, BoxPredicate, FnPredicateOps, Predicate, RcPredicate};
77pub use readonly_bi_consumer::{
78    ArcReadonlyBiConsumer, BoxReadonlyBiConsumer, FnReadonlyBiConsumerOps, RcReadonlyBiConsumer,
79    ReadonlyBiConsumer,
80};
81pub use readonly_consumer::{
82    ArcReadonlyConsumer, BoxReadonlyConsumer, FnReadonlyConsumerOps, RcReadonlyConsumer,
83    ReadonlyConsumer,
84};
85pub use readonly_supplier::{
86    ArcReadonlySupplier, BoxReadonlySupplier, RcReadonlySupplier, ReadonlySupplier,
87};
88pub use supplier::{ArcSupplier, BoxSupplier, FnSupplierOps, RcSupplier, Supplier};
89pub use supplier_once::{BoxSupplierOnce, SupplierOnce};
90pub use tester::{ArcTester, BoxTester, FnTesterOps, RcTester, Tester};
91pub use transformer::{
92    ArcConditionalTransformer, ArcTransformer, ArcUnaryOperator, BoxConditionalTransformer,
93    BoxTransformer, BoxUnaryOperator, FnTransformerOps, RcConditionalTransformer, RcTransformer,
94    RcUnaryOperator, Transformer, UnaryOperator,
95};
96pub use transformer_once::{
97    BoxConditionalTransformerOnce, BoxTransformerOnce, BoxUnaryOperatorOnce, FnTransformerOnceOps,
98    TransformerOnce, UnaryOperatorOnce,
99};