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