mirror of
https://github.com/logos-messaging/nim-ffi.git
synced 2026-06-20 16:29:31 +00:00
The Rust wrapper speaks CBOR, but after the native/CBOR split it still declared and called the bare `<name>` request symbols — which are now the *native* (typed-args) entry points, so every Rust request hit the wrong ABI (struct/ptr mismatch). This is the Rust counterpart of the C++ fix (914c70a), which was missed at the time. Point the ffi.rs externs and the api.rs ctor/method calls at `<name>_cbor`; the destructor has no CBOR variant and the event registration is unchanged here. Verified at runtime: the rust_client now creates a context and round-trips version / echo / schedule over CBOR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
timer example
This example is a self-contained Nimble project demonstrating how to import nim-ffi and use the .ffiCtor. / .ffi. abstraction.
Usage
-
Change into the example directory:
cd examples/timer -
Install the local
ffidependency:nimble install -y ../.. -
Build the example library:
nimble build -
Generate bindings:
nimble genbindings_rust nimble genbindings_cpp
Rust example clients
The Rust client lives in examples/timer/rust_client.
-
Run the sync example:
cd examples/timer/rust_client cargo run --bin rust_client -
Run the Tokio example:
cd examples/timer/rust_client cargo run --bin tokio_client
C++ example
The generated C++ example lives in examples/timer/cpp_bindings.
Build and run it with:
cd examples/timer/cpp_bindings
cmake -S . -B build
cmake --build build
./build/example