Skip to main content

co_actor/
lib.rs

1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (C) 2026 1io BRANDGUARDIAN GmbH
3
4// modules
5mod actor;
6mod actor_local;
7mod epic;
8#[cfg(feature = "js")]
9mod js_local_task_spawner;
10#[cfg(feature = "js")]
11mod js_task_spawner;
12mod response;
13mod state;
14mod task_handle;
15mod task_options;
16mod task_spawner_local;
17pub mod time;
18#[cfg(not(feature = "js"))]
19mod tokio_task_spawner;
20
21// exports
22pub use actor::{Actor, ActorError, ActorHandle, ActorInstance, ActorSpawner, ActorState};
23pub use actor_local::{LocalActor, LocalActorInstance, LocalActorSpawner};
24pub use backend::{TaskHandle, TaskSpawner};
25pub use epic::{
26	ActionDispatch, Actions, BoxEpic, Epic, EpicExt, EpicRuntime, JoinEpic, MergeEpic, SwitchEpic, TracingEpic,
27};
28#[cfg(feature = "js")]
29pub use js::JsLocalTaskSpawner;
30pub use response::{
31	Response, ResponseBackPressureStream, ResponseBackPressureStreamReceiver, ResponseReceiver, ResponseStream,
32	ResponseStreamReceiver, ResponseStreams,
33};
34pub use state::Reducer;
35pub use task_handle::TaskError;
36pub use task_options::TaskOptions;
37pub use task_spawner_local::{LocalTaskHandle, LocalTaskSpawner};
38
39// backends
40#[cfg(not(feature = "js"))]
41mod backend {
42	pub use super::tokio_task_spawner::{TaskHandle, TaskSpawner};
43}
44#[cfg(not(feature = "js"))]
45pub mod tokio {
46	pub use super::tokio_task_spawner::{TaskHandle, TaskSpawner};
47}
48#[cfg(feature = "js")]
49mod backend {
50	pub use super::js_task_spawner::{TaskHandle, TaskSpawner};
51}
52#[cfg(feature = "js")]
53pub mod js {
54	pub use super::{
55		js_local_task_spawner::JsLocalTaskSpawner,
56		js_task_spawner::{TaskHandle, TaskSpawner},
57	};
58}