Expand description

hs-bingen-traits

Utility traits behind hs-bindgen ergonomics. It helps user to easily define wrapper function to derive a Rust type from and into a C-FFI safe target type (that match the memory layout of an Haskell type).

What’s this library for?

Does repr(C) define a trait I can use to check structs were declared with #repr(C)? The answer is sadly no … that’s what this library trying to provide, like what safer_ffi does, but in a simpler and more minimal way, since the goal here is only to target Haskell FFI.

Acknowledgments

⚠️ This is still a working experiment, not yet production ready.

This project was part of a work assignment as an IOG contractor.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Traits

  • Generate C-FFI cast from a given Rust type.
  • Generate safe Rust wrapper from a given C-FFI type.
  • impl IntoReprC<Foo> for Bar -> means from C Foo type into Rust Bar repr
  • impl IntoReprRust<Foo> for Bar -> means from Rust Foo type into C Bar repr