mirror of
https://github.com/logos-messaging/nim-ffi.git
synced 2026-06-21 00:40:16 +00:00
Aligns the Rust crate names with the C generator and the symbol naming: the native (zero-serialization, same-process) crate is the bare `<lib>` and the CBOR (inter-process) crate carries the `_cbor` suffix — mirroring `<lib>.h` / `<lib>_cbor.h` and the `<name>` / `<name>_cbor` exports. Previously the native crate was `<lib>_native` and the CBOR crate was the bare `<lib>`, which is backwards from the symbol convention. Only the Cargo package name changes; the linked dylib stays `lib<lib>.dylib` (the `#[link]` name and build.rs are untouched). Consumers updated: rust_client depends on `my_timer_cbor` and imports from it; the native demo imports from the bare `my_timer`. Validated: rust_client builds against the renamed CBOR crate; the native demo round-trips version / echo / event / complex / schedule against the bare crate; check_bindings_rust regen is deterministic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rust Bindings for nim-timer
Purpose
This folder contains auto-generated Rust bindings (the my_timer crate) for the my_timer Nim library. It is generated from ../timer.nim and provides:
src/lib.rs: Main library exposing high-level Rust types and theMyTimerCtxAPIsrc/api.rs: High-level async/sync wrapper around the FFIsrc/ffi.rs: Rawextern "C"declarations for the Nim librarysrc/types.rs: Serializable Rust types matching the Nim FFI typesbuild.rs: Build script that compiles the Nim library tolibmy_timer.dylib(or.so/.dll)Cargo.toml: Package manifest with serde and serde_json dependencies
How It's Generated
Generate or regenerate these bindings by running from the parent directory:
cd examples/timer
nimble genbindings_rust
This command:
- Invokes the Nim compiler with
-d:targetLang:rustflag - Triggers
genBindings("examples/timer/rust_bindings", "../timer.nim")intimer.nim - Creates/updates the generated binding files
Using as a Dependency
The rust_client example consumes this crate:
[dependencies]
# CBOR (inter-process) crate carries the `_cbor` suffix; the native crate is the bare `my_timer`.
my_timer_cbor = { path = "../rust_bindings" }
Do Not Edit
The generated files in this folder are overwritten each time nimble genbindings_rust runs. Any manual changes will be lost.