# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
name = "effectful"
version = "0.2.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Effect<A, E, R> (sync + async), context/layers, pipe — interpreter-style, no bundled executor"
readme = "README.md"
license = "CC-BY-SA-4.0"
repository = "https://github.com/EduSantosBrito/effectful"
resolver = "2"

[features]
schema-serde = ["dep:serde_json"]

[lib]
name = "effectful"
path = "src/lib.rs"

[[example]]
name = "001_effect_value"
path = "examples/001_effect_value.rs"

[[example]]
name = "002_fail_boundary"
path = "examples/002_fail_boundary.rs"

[[example]]
name = "003_map"
path = "examples/003_map.rs"

[[example]]
name = "004_flat_map"
path = "examples/004_flat_map.rs"

[[example]]
name = "005_pipe"
path = "examples/005_pipe.rs"

[[example]]
name = "006_effect_macro_binds"
path = "examples/006_effect_macro_binds.rs"

[[example]]
name = "007_effect_macro_discard"
path = "examples/007_effect_macro_discard.rs"

[[example]]
name = "008_effect_macro_env"
path = "examples/008_effect_macro_env.rs"

[[example]]
name = "009_result_into_bind"
path = "examples/009_result_into_bind.rs"

[[example]]
name = "010_one_effect_macro_per_fn"
path = "examples/010_one_effect_macro_per_fn.rs"

[[example]]
name = "011_map_error"
path = "examples/011_map_error.rs"

[[example]]
name = "012_catch"
path = "examples/012_catch.rs"

[[example]]
name = "013_fail_into"
path = "examples/013_fail_into.rs"

[[example]]
name = "014_err_macro"
path = "examples/014_err_macro.rs"

[[example]]
name = "015_or_variants"
path = "examples/015_or_variants.rs"

[[example]]
name = "016_flat_map_union"
path = "examples/016_flat_map_union.rs"

[[example]]
name = "017_cause_optional"
path = "examples/017_cause_optional.rs"

[[example]]
name = "018_exit_type"
path = "examples/018_exit_type.rs"

[[example]]
name = "019_tagged_cell"
path = "examples/019_tagged_cell.rs"

[[example]]
name = "020_cons_nil"
path = "examples/020_cons_nil.rs"

[[example]]
name = "021_ctx_macro"
path = "examples/021_ctx_macro.rs"

[[example]]
name = "022_get_here"
path = "examples/022_get_here.rs"

[[example]]
name = "023_get_path"
path = "examples/023_get_path.rs"

[[example]]
name = "024_get_mut"
path = "examples/024_get_mut.rs"

[[example]]
name = "025_req_type"
path = "examples/025_req_type.rs"

[[example]]
name = "026_layer_fn"
path = "examples/026_layer_fn.rs"

[[example]]
name = "027_stack_layers"
path = "examples/027_stack_layers.rs"

[[example]]
name = "028_layer_build_errors"
path = "examples/028_layer_build_errors.rs"

[[example]]
name = "029_service_key"
path = "examples/029_service_key.rs"

[[example]]
name = "030_service_def"
path = "examples/030_service_def.rs"

[[example]]
name = "031_service_constructor"
path = "examples/031_service_constructor.rs"

[[example]]
name = "032_service_env"
path = "examples/032_service_env.rs"

[[example]]
name = "033_layer_service"
path = "examples/033_layer_service.rs"

[[example]]
name = "034_provide_service"
path = "examples/034_provide_service.rs"

[[example]]
name = "035_layer_graph"
path = "examples/035_layer_graph.rs"

[[example]]
name = "036_layer_graph_diagnostics"
path = "examples/036_layer_graph_diagnostics.rs"

[[example]]
name = "037_from_async_basic"
path = "examples/037_from_async_basic.rs"

[[example]]
name = "038_from_async_map_err"
path = "examples/038_from_async_map_err.rs"

[[example]]
name = "039_run_async"
path = "examples/039_run_async.rs"

[[example]]
name = "040_runtime_trait"
path = "examples/040_runtime_trait.rs"

[[example]]
name = "041_thread_sleep_runtime"
path = "examples/041_thread_sleep_runtime.rs"

[[example]]
name = "042_yield_now"
path = "examples/042_yield_now.rs"

[[example]]
name = "043_cancellation_token"
path = "examples/043_cancellation_token.rs"

[[example]]
name = "044_cancellation_tree"
path = "examples/044_cancellation_tree.rs"

[[example]]
name = "045_check_interrupt"
path = "examples/045_check_interrupt.rs"

[[example]]
name = "046_cancelled_waits"
path = "examples/046_cancelled_waits.rs"

[[example]]
name = "047_fiber_handle"
path = "examples/047_fiber_handle.rs"

[[example]]
name = "048_run_fork_join"
path = "examples/048_run_fork_join.rs"

[[example]]
name = "049_fiber_all"
path = "examples/049_fiber_all.rs"

[[example]]
name = "050_interrupt_all"
path = "examples/050_interrupt_all.rs"

[[example]]
name = "051_fiber_ref"
path = "examples/051_fiber_ref.rs"

[[example]]
name = "052_schedule_repeat_n"
path = "examples/052_schedule_repeat_n.rs"

[[example]]
name = "053_schedule_repeat"
path = "examples/053_schedule_repeat.rs"

[[example]]
name = "054_schedule_retry"
path = "examples/054_schedule_retry.rs"

[[example]]
name = "055_schedule_exhausted"
path = "examples/055_schedule_exhausted.rs"

[[example]]
name = "056_test_clock"
path = "examples/056_test_clock.rs"

[[example]]
name = "057_repeat_with_clock"
path = "examples/057_repeat_with_clock.rs"

[[example]]
name = "058_retry_with_clock"
path = "examples/058_retry_with_clock.rs"

[[example]]
name = "059_schedule_interrupt"
path = "examples/059_schedule_interrupt.rs"

[[example]]
name = "060_stream_range"
path = "examples/060_stream_range.rs"

[[example]]
name = "061_stream_from_iterable"
path = "examples/061_stream_from_iterable.rs"

[[example]]
name = "062_stream_map_filter"
path = "examples/062_stream_map_filter.rs"

[[example]]
name = "063_stream_take_drop"
path = "examples/063_stream_take_drop.rs"

[[example]]
name = "064_stream_scan"
path = "examples/064_stream_scan.rs"

[[example]]
name = "065_stream_grouped"
path = "examples/065_stream_grouped.rs"

[[example]]
name = "066_stream_collect_fold"
path = "examples/066_stream_collect_fold.rs"

[[example]]
name = "067_stream_unfold"
path = "examples/067_stream_unfold.rs"

[[example]]
name = "068_stream_from_effect"
path = "examples/068_stream_from_effect.rs"

[[example]]
name = "069_stream_map_effect"
path = "examples/069_stream_map_effect.rs"

[[example]]
name = "070_stream_map_par_n"
path = "examples/070_stream_map_par_n.rs"

[[example]]
name = "071_stream_broadcast"
path = "examples/071_stream_broadcast.rs"

[[example]]
name = "072_stream_channel"
path = "examples/072_stream_channel.rs"

[[example]]
name = "073_stream_producer_fail"
path = "examples/073_stream_producer_fail.rs"

[[example]]
name = "074_stream_channel_policy"
path = "examples/074_stream_channel_policy.rs"

[[example]]
name = "075_backpressure_decision"
path = "examples/075_backpressure_decision.rs"

[[example]]
name = "076_stream_duplex_queue"
path = "examples/076_stream_duplex_queue.rs"

[[example]]
name = "077_stm_tref"
path = "examples/077_stm_tref.rs"

[[example]]
name = "078_stm_atomically"
path = "examples/078_stm_atomically.rs"

[[example]]
name = "079_stm_contention"
path = "examples/079_stm_contention.rs"

[[example]]
name = "080_stm_tmap"
path = "examples/080_stm_tmap.rs"

[[example]]
name = "081_stm_tqueue"
path = "examples/081_stm_tqueue.rs"

[[example]]
name = "082_stm_tsemaphore"
path = "examples/082_stm_tsemaphore.rs"

[[example]]
name = "083_schema_primitive"
path = "examples/083_schema_primitive.rs"

[[example]]
name = "084_schema_compose"
path = "examples/084_schema_compose.rs"

[[example]]
name = "085_unknown_decode"
path = "examples/085_unknown_decode.rs"

[[example]]
name = "086_parse_error_paths"
path = "examples/086_parse_error_paths.rs"

[[example]]
name = "087_effect_data"
path = "examples/087_effect_data.rs"

[[example]]
name = "088_brand_equal_hash"
path = "examples/088_brand_equal_hash.rs"

[[example]]
name = "089_ensuring"
path = "examples/089_ensuring.rs"

[[example]]
name = "090_acquire_release"
path = "examples/090_acquire_release.rs"

[[example]]
name = "091_scope_with"
path = "examples/091_scope_with.rs"

[[example]]
name = "092_scoped"
path = "examples/092_scoped.rs"

[[example]]
name = "093_tracing_install"
path = "examples/093_tracing_install.rs"

[[example]]
name = "094_tracing_spans"
path = "examples/094_tracing_spans.rs"

[[example]]
name = "095_tracing_events"
path = "examples/095_tracing_events.rs"

[[example]]
name = "096_tracing_snapshot"
path = "examples/096_tracing_snapshot.rs"

[[example]]
name = "097_run_test"
path = "examples/097_run_test.rs"

[[example]]
name = "098_run_test_clock_hygiene"
path = "examples/098_run_test_clock_hygiene.rs"

[[example]]
name = "099_snapshot_corpus"
path = "examples/099_snapshot_corpus.rs"

[[example]]
name = "100_channel_queue"
path = "examples/100_channel_queue.rs"

[[example]]
name = "101_pubsub"
path = "examples/101_pubsub.rs"

[[example]]
name = "102_semaphore"
path = "examples/102_semaphore.rs"

[[example]]
name = "103_pool"
path = "examples/103_pool.rs"

[[example]]
name = "104_cache"
path = "examples/104_cache.rs"

[[example]]
name = "105_match_matcher"
path = "examples/105_match_matcher.rs"

[[bench]]
name = "effect_macro_bind_free"
path = "benches/effect_macro_bind_free.rs"
harness = false

[[bench]]
name = "phase0_baseline"
path = "benches/phase0_baseline.rs"
harness = false

[dependencies.effectful_macro]
version = "0.2.0"

[dependencies.effectful_proc_macro]
version = "0.2.0"

[dependencies.flume]
version = "0.12"

[dependencies.futures]
version = "0.3"
features = ["std"]
default-features = false

[dependencies.im]
version = "15"

[dependencies.jiff]
version = "0.2.23"

[dependencies.serde_json]
version = "1"
optional = true

[dependencies.tokio]
version = "1.50.0"
features = [
    "macros",
    "rt",
    "time",
    "sync",
]

[dev-dependencies.criterion]
version = "0.8.2"

[dev-dependencies.pollster]
version = "0.4"

[dev-dependencies.proptest]
version = "1"

[dev-dependencies.rstest]
version = "0.26"

[dev-dependencies.tokio]
version = "1.50.0"
features = [
    "macros",
    "rt",
    "rt-multi-thread",
    "sync",
    "time",
]

[lints.rust]
unsafe_code = "forbid"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    "cfg(coverage)",
    'cfg(feature, values("mock"))',
]
