1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! This module contains traits that define abstractions for this crate's ABI.
//!
//! # Type Layout
//!
//! The ABI (Application Binary Interface) is based on a combination of the
//! `#[repr(C)]`, `#[repr(transparent)]` and `#[repr(aligned(int))]` layout
//! attributes.memory layout representation. This makes the ABI predictable, relative
//! simple and straightforward to define.
//!
//! # Soundness
//!
//! Types within this module are sound so long as they are compatible with the ABI
//! that this crate uses. Since these traits all can be derived, even complex types
//! such as structs and unions can be validated at compile time. This zero-cost
//! abstraction means that little to no runtime costs are incurred as a result of
//! using this crate.
//!
//! # Derive
//!
//! It is strongly recommended that you use the `derive` macros included in the
//! `abio_derive` sister crate to validate the layout of your types at compile
//! time. Relying on runtime checks is more error-prone and does not provide the same
//! safety guarantees available when deriving the traits for your types.
pub use Abi;
pub use BytesOf;
pub use Decode;
pub use Zeroable;