Ivan FB e6c09d25b1
fix Cross-file FFI exports silently disappear from bindings. genBindings() only sees procs registered in modules that were imported transitively before its call. A downstream
user who adds {.ffi.} in a sub-module that isn't pulled into the root file gets a successful build with missing methods. The README warns about this, but there's no
  compile-time diagnostic — the registry could at least error if genBindings() is called and the count looks suspicious, or expose a way to assert "I expect N exports."
2026-05-11 22:45:35 +02:00
..
2026-05-10 11:38:41 +02:00

nim_timer example

This example is a self-contained Nimble project demonstrating how to import nim-ffi and use the .ffiCtor. / .ffi. abstraction.

Usage

  1. Change into the example directory:

    cd examples/nim_timer
    
  2. Install the local ffi dependency:

    nimble install -y ../..
    
  3. Build the example library:

    nimble build
    
  4. Generate bindings:

    nimble genbindings_rust
    nimble genbindings_cpp
    

Rust example clients

The Rust client lives in examples/nim_timer/rust_client.

  • Run the sync example:

    cd examples/nim_timer/rust_client
    cargo run --bin rust_client
    
  • Run the Tokio example:

    cd examples/nim_timer/rust_client
    cargo run --bin tokio_client
    

C++ example

The generated C++ example lives in examples/nim_timer/cpp_bindings.

Build and run it with:

cd examples/nim_timer/cpp_bindings
cmake -S . -B build
cmake --build build
./build/example