sim_table_core/manifest.rs
1//! The narrow backend-manifest constructor shared by host-registered table
2//! backends.
3//!
4//! Table backend crates (`sim-table-hash`, `sim-table-lazy`, ...) each declared
5//! a byte-identical empty [`LibManifest`]: no exports, no requirements, no
6//! capabilities, [`HostRegistered`](LibTarget::HostRegistered), ABI `{0, 1}`.
7//! Backend registration itself (the has-lib guard and `register` call) stays in
8//! each crate because the registry differs; only the manifest shape is shared
9//! here.
10
11use sim_kernel::{AbiVersion, Dependency, Export, LibManifest, LibTarget, Symbol, Version};
12
13/// Build the empty, host-registered [`LibManifest`] a table backend presents.
14///
15/// The `id` names the library (e.g. `Symbol::qualified("table", "hash")`) and
16/// `version` is the crate version literal (typically `env!("CARGO_PKG_VERSION")`).
17/// The manifest declares no exports, requirements, or capabilities, targets
18/// [`LibTarget::HostRegistered`], and pins ABI `{ major: 0, minor: 1 }`.
19pub fn backend_manifest(id: Symbol, version: &'static str) -> LibManifest {
20 LibManifest {
21 id,
22 version: Version(version.to_owned()),
23 abi: AbiVersion { major: 0, minor: 1 },
24 target: LibTarget::HostRegistered,
25 requires: Vec::<Dependency>::new(),
26 capabilities: Vec::new(),
27 exports: Vec::<Export>::new(),
28 }
29}