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(feature = "no_std")]
15extern crate alloc;
16
17#[doc(hidden)]
18pub mod arch;
19#[doc(hidden)]
20pub mod thunk;
21
22pub mod bare_closure;
23pub mod cc;
24pub mod jit_alloc;
25
26/// Common imports required to use `closure-ffi`.
27pub mod prelude {
28    #[cfg(feature = "proc_macros")]
29    #[doc(inline)]
30    pub use super::bare_closure::bare_dyn;
31    #[doc(inline)]
32    pub use super::bare_closure::{BareFn, BareFnMut, BareFnOnce};
33    #[doc(inline)]
34    pub use super::cc;
35    #[doc(inline)]
36    pub use super::jit_alloc::{JitAlloc, JitAllocError};
37}
38
39#[doc(inline)]
40pub use prelude::*;