Skip to main content

sim_lib_control/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Control behavior for the SIM runtime: async, backtracking, conditions.
4//!
5//! The kernel defines the control-policy contracts; this crate supplies the
6//! concrete control organ (coroutines, generators, restarts, non-local exits)
7//! layered over those contracts.
8
9mod r#async;
10mod backtrack;
11mod claims;
12mod condition;
13mod coroutine;
14mod generator;
15mod model;
16mod nonlocal;
17mod ops;
18mod policy;
19mod prompt;
20mod restart;
21mod runtime;
22
23pub use r#async::{AsyncPoll, AsyncTask};
24pub use backtrack::{BacktrackStep, Backtracker};
25pub use claims::{
26    control_op_keys, control_organ_symbol, publish_control_organ_claims,
27    publish_control_organ_claims_for_lib,
28};
29pub use condition::{Condition, ConditionHandler, ConditionStack, signal_condition};
30pub use coroutine::{Coroutine, CoroutineLane, CoroutineStep};
31pub use generator::{Generator, GeneratorStep};
32pub use model::{ContinuationValue, ControlResultValue};
33pub use nonlocal::{LabeledPrompt, NonLocalExit, NonLocalExitKind, escape_to_label};
34pub use ops::{ControlFunction, abort_symbol, capture_symbol, prompt_symbol, resume_symbol};
35pub use policy::{
36    OneShotControlPolicy, SegmentedControlPolicy, install_control_policy, one_shot_control_policy,
37    segmented_control_policy,
38};
39pub use prompt::{ControlPrompt, ControlTag, raise_prompt};
40pub use restart::{Restart, RestartStack, invoke_restart};
41pub use runtime::{ControlLib, control_exports, install_control_lib, manifest_name};
42
43#[cfg(test)]
44mod derivation_tests;
45
46#[cfg(test)]
47mod tests;