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 conditional;
14mod coroutine;
15mod generator;
16mod model;
17mod nonlocal;
18mod ops;
19mod policy;
20mod prompt;
21mod restart;
22mod runtime;
23
24pub use r#async::{AsyncPoll, AsyncTask};
25pub use backtrack::{BacktrackStep, Backtracker};
26pub use claims::{
27    control_op_keys, control_organ_symbol, publish_control_organ_claims,
28    publish_control_organ_claims_for_lib,
29};
30pub use condition::{Condition, ConditionHandler, ConditionStack, signal_condition};
31pub use conditional::IfForm;
32pub use coroutine::{Coroutine, CoroutineLane, CoroutineStep};
33pub use generator::{Generator, GeneratorStep};
34pub use model::{ContinuationValue, ControlResultValue};
35pub use nonlocal::{LabeledPrompt, NonLocalExit, NonLocalExitKind, escape_to_label};
36pub use ops::{ControlFunction, abort_symbol, capture_symbol, prompt_symbol, resume_symbol};
37pub use policy::{
38    OneShotControlPolicy, SegmentedControlPolicy, install_control_policy, one_shot_control_policy,
39    segmented_control_policy,
40};
41pub use prompt::{ControlPrompt, ControlTag, raise_prompt};
42pub use restart::{Restart, RestartStack, invoke_restart};
43pub use runtime::{ControlLib, control_exports, install_control_lib, manifest_name};
44
45/// Cookbook recipes for this lib, embedded at build time.
46pub static RECIPES: sim_cookbook::EmbeddedDir =
47    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
48
49#[cfg(test)]
50mod derivation_tests;
51
52#[cfg(test)]
53mod tests;