Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

Key terms used throughout this book.


bind* (bind operator) The prefix operator inside effect! that runs an inner effect and yields its success value. let x = bind* eff binds the value; bind* eff; runs and discards it.


Backpressure The mechanism by which a slow consumer controls a fast producer. In effectful streams this is represented by BackpressurePolicy: BoundedBlock, DropNewest, DropOldest, or Fail.


Brand A zero-cost nominal wrapper. Brand<String, EmailMarker> and Brand<String, NameMarker> are different types even if both wrap String.


Cause<E> The structured reason an effect failed: Fail(E), Die(String), Interrupt(FiberId), or composed causes Both / Then.


Chunk<A> A batch of stream elements. Streams pull and process chunks rather than one element at a time internally.


Clock A trait abstracting time. LiveClock uses real time; TestClock is controlled by tests.


commit / atomically Functions that lift Stm<A, E> into Effect<A, E, R>. Running the effect executes the transaction and retries on conflicts or Stm::retry().


Context<...> Typed heterogeneous environment for tagged services, built from Cons / Nil cells containing Tagged<K, V> values.


Effect<A, E, R> The central type: a lazy description of work that succeeds with A, fails with E, and requires environment R.


effect! macro Do-notation for Effect. It rewrites bind* effect into bind/await plumbing and wraps the block tail as success.


Exit<A, E> Terminal outcome: Exit::Success(A) or Exit::Failure(Cause<E>). Returned by run_test and FiberHandle::await_exit().


Fiber A lightweight unit of concurrent work. Spawn with run_fork; await with join() or await_exit().


FiberRef A fiber-scoped variable used for request ids, tracing context, and similar dynamic data.


from_async Constructor that lifts an async closure returning Result<A, E> into an Effect<A, E, R>.


HList The compile-time linked-list shape Cons<Head, Tail> / Nil used by the typed Context API.


Layer A lazy recipe for building services into a ServiceContext. Compose layers with merge, provide, provide_merge, and memoized().


Never The uninhabited runtime error type (Infallible) used when an effect cannot fail through its typed error channel.


ParseError / ParseErrors Schema parse failures. Build a single issue with ParseError::new(path, message) and aggregate with ParseErrors::one or ParseErrors::new.


R (environment type parameter) The third parameter of Effect<A, E, R>. It encodes required dependencies in the type.


run_blocking Synchronous runner: run_blocking(effect, env). Use at application/test boundaries, not inside reusable library functions.


effect_test Attribute for effect-returning tests. The test body returns Effect; the harness executes it, provides the environment or layer, checks leak counters, and panics with Debug output on typed failure.

run_test Lower-level synchronous test runner: run_test(effect, env) -> Exit<A, E>. It resets and checks the test leak counters around the run.


Schedule A value describing delays and repeat limits for the free retry(|| effect, schedule) and repeat(|| effect, schedule) functions. Current constructors include recurs, spaced, exponential, recurs_while, and recurs_until.


Schema A Schema<A, I, E> decodes wire value I or dynamic Unknown into A and can encode A back to I.


Scope A resource lifetime boundary. Register finalizers with Scope::add_finalizer; close the scope to run finalizers.


service_key! Macro for declaring a nominal key type, e.g. service_key!(pub struct DbKey);. Pair it with Tagged<DbKey, Db> / Service<DbKey, Db>.


Sink A stream consumer represented by Sink<Out, In, E, R>. Built-ins include Sink::collect, Sink::fold_left, and Sink::drain; run with sink.run(stream).


Stm<A, E> A composable transactional computation. Use Stm::succeed, Stm::fail, Stm::retry, flat_map, and map; run with commit / atomically.


Stream A pull stream of values with typed error and environment. Build with from_iterable or from_effect; consume with run_collect, run_fold, or sinks.


Tag / Tagged The typed key/value mechanism for contexts. Tagged<K, V> stores a value V under nominal key K.


TestClock Controllable clock for deterministic scheduling tests. Construct with TestClock::new(start_instant).


TRef<T> A transactional mutable cell. Allocate with TRef::make(value) inside Stm; use read_stm, write_stm, update_stm, and modify_stm.


Unknown Dynamic input for schemas. Current variants are Null, Bool, I64, F64, String, Array, and Object.