Define complete Rust API mapping schema
This commit is contained in:
@@ -12,10 +12,13 @@ LibreMetaverse library assemblies at the pinned upstream commit. It contains:
|
||||
every LibreMetaverse API that uses them.
|
||||
|
||||
External entries are replacement obligations, not copied dependency APIs.
|
||||
Issue #3 must map each one to a Rust crate/path: use Rust core/std or an adopted
|
||||
crate where it preserves the contract, otherwise define a native MetaCrate
|
||||
type. The catalog deliberately does not enumerate members of SkiaSharp,
|
||||
SIPSorcery, MessagePack, CoreJ2K, or any other external assembly.
|
||||
`RUST-TYPES.tsv` resolves every entry to Rust core/std, an adopted
|
||||
cross-platform crate, or a native MetaCrate type. Third-party API objects use
|
||||
project-owned boundary types so their eventual backend can be replaced without
|
||||
exposing SkiaSharp, SIPSorcery, MessagePack, CoreJ2K, or another foreign member
|
||||
surface. `RUST-MAPPING.tsv` records one reviewed destination and full Rust
|
||||
signature for every catalog member. `MAPPING-COVERAGE.md` is the readable gate
|
||||
summary.
|
||||
|
||||
Regenerate from the clean pinned upstream checkout:
|
||||
|
||||
@@ -28,3 +31,17 @@ extractor twice against the same compiled metadata, rejects count mismatches or
|
||||
duplicate documentation IDs, and writes the result only when both outputs are
|
||||
byte-identical. The extractor is development-only and is absent from every
|
||||
Cargo manifest and published Rust dependency graph.
|
||||
|
||||
Regenerate or validate the Rust mapping with only Python's standard library:
|
||||
|
||||
```sh
|
||||
python3 tools/generate_rust_mapping.py
|
||||
python3 tools/generate_rust_mapping.py --check
|
||||
```
|
||||
|
||||
The checker rejects duplicate C# IDs, duplicate Rust destinations, invalid
|
||||
statuses, stale or missing catalog entries, unresolved signature types,
|
||||
assemblies without representative mappings, and platform-specific API targets.
|
||||
The two support traits in `RUST-TYPES.tsv` are included because compiled public
|
||||
inheritance records reference them even though they are absent from the public
|
||||
type table.
|
||||
|
||||
Reference in New Issue
Block a user