1#![doc = include_str!("docs.md")]
2
3extern crate self as scheme_rs;
4
5pub(crate) mod ast;
6pub(crate) mod character;
7pub(crate) mod cps;
8pub(crate) mod enumerations;
9pub mod env;
10pub mod eval;
11pub mod exceptions;
12pub(crate) mod expand;
13pub mod gc;
14pub mod hashtables;
15pub mod lists;
16pub mod num;
17pub mod ports;
18pub mod proc;
19pub mod records;
20pub mod registry;
21pub mod runtime;
22pub mod strings;
23pub mod symbols;
24pub mod syntax;
25pub mod threads;
26pub mod value;
27pub mod vectors;
28
29#[derive(Debug, Clone)]
31enum Either<L, R> {
32 Left(L),
33 Right(R),
34}
35
36impl<L, R> Either<L, R> {
37 pub fn left_or(self, default: L) -> L {
38 if let Self::Left(l) = self { l } else { default }
39 }
40}
41
42#[cfg(feature = "tokio")]
43pub mod futures;
44
45#[cfg(all(feature = "async", not(feature = "tokio")))]
47compile_error!("async features requires the tokio feature to be enabled");
48
49#[cfg(target_pointer_width = "32")]
50compile_error!("32 bit architectures are currently not supported");