rusterlium / erlang_nif-sys

Low level bindings to Erlang NIF API for Rust
Apache License 2.0
90 stars 19 forks source link

ErlNifEnv should be an empty type #30

Open nox opened 6 years ago

nox commented 6 years ago

It is supposed to be opaque. It should at least be of size 0.

goertzenator commented 6 years ago

The dummy member is not pub; where are you seeing it not be opaque?

  1. The dummy pointer member disables Send and Sync. There are other ways in unstable Rust.

  2. Also at the time of writing I recall an error or warning for empty structs. The recommended alternative was to use an empty enum, but I didn't like the way ErlNifEnv listed an enum in the docs, so stuck with struct. I suspect this may have changed in current Rust.

When both points above can be resolved in stable Rust I'll happily make the struct size 0.

benoitc commented 5 years ago

what the status of this?

goertzenator commented 5 years ago

Unless there's some concrete issue with the current implementation this should be closed.