closure_ffi/
lib.rs

1#![cfg_attr(feature = "build-docs", feature(doc_auto_cfg))]
2#![cfg_attr(feature = "build-docs", feature(doc_cfg))]
3#![cfg_attr(feature = "no_std", no_std)]
4#![doc = include_str!("../README.md")]
5
6#[cfg(all(
7    not(target_arch = "x86_64"),
8    not(target_arch = "x86"),
9    not(target_arch = "aarch64"),
10    not(target_arch = "arm")
11))]
12compile_error!("closure-ffi is not supported on this target architecture.");
13
14#[cfg(all(feature = "bundled_jit_alloc", feature = "custom_jit_alloc"))]
15compile_error!("only one of bundled_jit_alloc or custom_jit_alloc may be specified");
16
17#[cfg(feature = "no_std")]
18extern crate alloc;
19
20#[doc(hidden)]
21pub mod arch;
22#[doc(hidden)]
23pub mod thunk;
24
25pub mod bare_closure;
26pub mod cc;
27pub mod jit_alloc;
28
29/// Common imports required to use `closure-ffi`.
30pub mod prelude {
31    #[cfg(feature = "proc_macros")]
32    #[doc(inline)]
33    pub use super::bare_closure::bare_dyn;
34    #[doc(inline)]
35    pub use super::bare_closure::{BareFn, BareFnMut, BareFnOnce};
36    #[doc(inline)]
37    pub use super::cc;
38    #[doc(inline)]
39    pub use super::jit_alloc::{JitAlloc, JitAllocError};
40}
41
42#[doc(inline)]
43pub use prelude::*;