Developer FAQ¶
Why is cbindgen behind a feature flag?¶
cargo publish forbids build scripts that modify the source directory. Since
cbindgen writes include/rgpot.h into the crate tree, it must be opt-in. The
committed header is the canonical copy; regenerate it with pixi r gen-header
when the public Rust API changes.
Why is the Cap’n Proto schema bundled?¶
The schema at rgpot-core/schema/Potentials.capnp is included in the crate so
that the rpc feature works when installed from crates.io, where the
monorepo’s CppCore/ directory is not available. The build.rs tries the
bundled copy first, then falls back to CppCore/rgpot/rpc/Potentials.capnp in
the monorepo.
Why is the crate README in org-mode?¶
The source of truth is rgpot-core/README.org. It is exported to README.md
via pixi r -e docs gen-readme (which uses Emacs ox-md). The rendered
markdown is committed and referenced by Cargo.toml for display on crates.io.
Edit the .org file, then regenerate.
How do I add a new pixi environment?¶
Edit pixi.toml: add a feature section with its dependencies, then register it
in [environments]. See the existing rpctest and docs features as examples.
Where does the Rust API documentation come from?¶
The Sphinx extension sphinxcontrib-rust parses the Rust source directly
(rgpot-core/src/) and generates RST during sphinx-build. The output goes to
docs/source/crates/rgpot_core/ and is included in the main documentation site
alongside the C++ API reference.
How do I run a single Rust test?¶
cargo nextest run --manifest-path rgpot-core/Cargo.toml -E 'test(test_name)'
Or with standard cargo test:
cargo test --manifest-path rgpot-core/Cargo.toml -- test_name