There is nbindgen that generates Rust bindings for Nim - https://github.com/arnetheduck/nbindgen
See this forum post for some examples: https://forum.nim-lang.org/t/5816
And here is short example how to call Nim code from Rust: https://stackoverflow.com/questions/59879692/how-to-call-a-nim-function-from-rust-through-c-ffi
We have a guide written here: https://status-im.github.io/nim-style-guide/interop.rust.html
The short story is that it's easy to make rust behave like C for FFI purposes, and from there, everything you know about C-Nim FFI becomes applicable (which can be seen in the above guide: most of the FFI stuff is in the C section)
In particular this: https://github.com/mratsim/constantine/blob/12f5686/constantine-rust/constantine-halo2-zal/src/lib.rs Implements the traits: https://github.com/privacy-scaling-explorations/halo2/blob/9eedeb5/halo2_middleware/src/zal.rs as described in https://github.com/privacy-scaling-explorations/halo2/issues/216
And this: https://github.com/mratsim/constantine/blob/9f85b83/constantine-rust/constantine-ethereum-kzg/src/lib.rs accelerates: https://github.com/grandinetech/rust-kzg