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
38
39
40
41
42
43
44
//! The WeaveFFI API model: everything between an API definition and code
//! generation.
//!
//! * [`ir`] holds the in-memory IR types that an IDL document or annotated
//! Rust source lowers to, and [`parse`] reads the IDL text formats (YAML,
//! JSON, and TOML).
//! * [`rust`] extracts the IR from annotated Rust source; the proc-macros and
//! the CLI share it.
//! * [`validate`] checks a document and produces the [`ResolvedApi`] every
//! consumer works from.
//! * [`model`], [`abi`], [`plan`], [`errors`], and [`pkg`] build the canonical
//! binding model, the C ABI lowering, the marshalling plan, the error
//! mapping, and the package identity.
//! * [`checksum`] fingerprints each top-level module's contract so a stale
//! binding refuses to load.
//!
//! # Features
//!
//! * `idl` (default): the IDL text formats, JSON Schema derivation for the IR
//! types, and fancy miette diagnostics. Without it the crate still provides
//! the IR types, Rust extraction, validation, and the binding model, which
//! is all the proc-macros need.
// A few docs link to IDL-only items (the `parse` module, miette's
// `Diagnostic`); those links only resolve with the `idl` feature.
pub use ResolvedApi;