Skip to main content

deep_causality_core/
lib.rs

1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2023 - 2026. The DeepCausality Authors and Contributors. All Rights Reserved.
4 */
5
6#![cfg_attr(not(feature = "std"), no_std)]
7
8// `alloc` is a level, not a complete configuration: it grants heap support but says nothing
9// about where float math comes from. Selected on its own it leaves `deep_causality_num`
10// without a math backend, which surfaces as a wall of unrelated errors deep in the
11// dependency tree. Reject the incomplete combination here with an actionable message.
12#[cfg(not(any(feature = "std", feature = "no-std")))]
13compile_error!(
14    "deep_causality_core needs one platform level: `std` or `no-std`. \
15     The `alloc` feature is a level on top of those and does not select a float-math backend \
16     for deep_causality_num, so it cannot be enabled on its own. \
17     Use the default features for hosted targets, or \
18     `--no-default-features --features no-std` for bare metal."
19);
20
21#[cfg(feature = "alloc")]
22extern crate alloc;
23extern crate core;
24
25mod alias;
26mod errors;
27mod traits;
28mod types;
29
30// Re-export alias types
31pub use crate::alias::*;
32
33// Re-export error types
34pub use crate::errors::causality_error::{CausalityError, CausalityErrorEnum};
35
36// Re-export traits
37pub use crate::traits::alternatable::Alternatable;
38pub use crate::traits::alternatable_context::AlternatableContext;
39pub use crate::traits::alternatable_state::AlternatableState;
40pub use crate::traits::alternatable_value::AlternatableValue;
41pub use crate::traits::causal_monad::CausalMonad;
42
43// Re-export types
44pub use crate::types::causal_arrow::{
45    CausalArrow, CausalArrowBuilder, CausalFlowOut, CausalLift, KleisliCompose, causal_arrow,
46};
47pub use crate::types::causal_command::{CausalCommand, CausalCommandWitness};
48pub use crate::types::causal_effect::CausalEffect;
49pub use crate::types::causal_effect_propagation_process::CausalEffectPropagationProcess;
50pub use crate::types::causal_effect_propagation_process::hkt::CausalEffectPropagationProcessWitness;
51pub use crate::types::causal_flow::CausalFlow;
52pub use crate::types::effect_log::log_effect::EffectLog;
53// IO file actions (std-only): concrete `IoAction`s reading/writing files, fixing
54// `Error = CausalityError`. The `IoAction` trait itself lives in `deep_causality_haft`.
55#[cfg(feature = "std")]
56pub use crate::types::io::{
57    ReadCsv, ReadText, WriteCsv, WriteText, read_csv, read_text, write_csv, write_text,
58};
59pub use crate::types::propagating_effect::PropagatingEffect;
60pub use crate::types::propagating_effect::hkt::PropagatingEffectWitness;
61pub use crate::types::propagating_process::PropagatingProcess;
62pub use crate::types::propagating_process::hkt::PropagatingProcessWitness;
63pub use deep_causality_haft::Either;