Skip to main content

qubit_function/functions/
mod.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025 - 2026 Haixing Hu.
4 *
5 *    SPDX-License-Identifier: Apache-2.0
6 *
7 *    Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10//! # Functions Module
11//!
12//! This module provides function-related functional programming abstractions
13//! for transforming values from one type to another with reference semantics.
14//!
15
16pub mod bi_function;
17pub mod bi_function_once;
18pub mod bi_mutating_function;
19pub mod bi_mutating_function_once;
20pub mod function;
21pub mod function_once;
22pub(crate) mod macros;
23pub mod mutating_function;
24pub mod mutating_function_once;
25pub mod stateful_function;
26pub mod stateful_mutating_function;
27
28pub use bi_function::{
29    ArcBiFunction,
30    ArcBinaryFunction,
31    ArcConditionalBiFunction,
32    BiFunction,
33    BoxBiFunction,
34    BoxBinaryFunction,
35    BoxConditionalBiFunction,
36    FnBiFunctionOps,
37    RcBiFunction,
38    RcBinaryFunction,
39    RcConditionalBiFunction,
40};
41pub use bi_function_once::{
42    BiFunctionOnce,
43    BoxBiFunctionOnce,
44    BoxConditionalBiFunctionOnce,
45    FnBiFunctionOnceOps,
46};
47pub use bi_mutating_function::{
48    ArcBiMutatingFunction,
49    ArcBinaryMutatingFunction,
50    ArcConditionalBiMutatingFunction,
51    BiMutatingFunction,
52    BoxBiMutatingFunction,
53    BoxBinaryMutatingFunction,
54    BoxConditionalBiMutatingFunction,
55    FnBiMutatingFunctionOps,
56    RcBiMutatingFunction,
57    RcBinaryMutatingFunction,
58    RcConditionalBiMutatingFunction,
59};
60pub use bi_mutating_function_once::{
61    BiMutatingFunctionOnce,
62    BoxBiMutatingFunctionOnce,
63    BoxConditionalBiMutatingFunctionOnce,
64    FnBiMutatingFunctionOnceOps,
65};
66pub use function::{
67    ArcConditionalFunction,
68    ArcFunction,
69    BoxConditionalFunction,
70    BoxFunction,
71    FnFunctionOps,
72    Function,
73    RcConditionalFunction,
74    RcFunction,
75};
76pub use function_once::{
77    BoxConditionalFunctionOnce,
78    BoxFunctionOnce,
79    FnFunctionOnceOps,
80    FunctionOnce,
81};
82pub use mutating_function::{
83    ArcConditionalMutatingFunction,
84    ArcMutatingFunction,
85    BoxConditionalMutatingFunction,
86    BoxMutatingFunction,
87    FnMutatingFunctionOps,
88    MutatingFunction,
89    RcConditionalMutatingFunction,
90    RcMutatingFunction,
91};
92pub use mutating_function_once::{
93    BoxConditionalMutatingFunctionOnce,
94    BoxMutatingFunctionOnce,
95    FnMutatingFunctionOnceOps,
96    MutatingFunctionOnce,
97};
98pub use stateful_function::{
99    ArcConditionalStatefulFunction,
100    ArcStatefulFunction,
101    BoxConditionalStatefulFunction,
102    BoxStatefulFunction,
103    FnStatefulFunctionOps,
104    RcConditionalStatefulFunction,
105    RcStatefulFunction,
106    StatefulFunction,
107};
108pub use stateful_mutating_function::{
109    ArcConditionalStatefulMutatingFunction,
110    ArcStatefulMutatingFunction,
111    BoxConditionalStatefulMutatingFunction,
112    BoxStatefulMutatingFunction,
113    FnStatefulMutatingFunctionOps,
114    RcConditionalStatefulMutatingFunction,
115    RcStatefulMutatingFunction,
116    StatefulMutatingFunction,
117};