-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
It is documented nowhere that primitives and thin pointers are FFI-safe #31227
Comments
cc #30382 |
Yeah FFI stuff has been in a weird limbo iirc. I don't really touch on it in the nomicon, and TRPL's bits on it are being redone. |
Also, it isn't documented (AFAICT) that one can pass a reference or mutable reference where an extern "C" function takes a const pointer or non-const pointer. |
I replied to this over here but realised later the issue was closed - so am putting it here again in an open issue hoping that's fine.
I checked that and it works, i was wondering is there anything for the reverse - for e.g.: this. The other function find does not give any warning. Though I understand that all it says is it follow C calling convention and no name-mangling none of which might warrant the parameter type warning, it is usually intended to be called form another language (with C compatibility) so should generate a warning in this case too ? Passing a callback from C for instance will be Undefined Behavior in this case. I was also stung by this:
Of-course looking back it was a stupid mistake - but i had subconciously assumed array would decay into a ptr like in C when callback was invoked. All my tests passed as they were written in rust. Only when interfacing with C and running into occassional seg-faults that i realised the mistake. If there was a warning or some language feature to mark that this function is not only for C ABI compatibility but also strictly for a call from C (like what Same with |
nominating for next docs meeting |
Thanks to rust-lang-nursery/nomicon#21, FFI documentation now has a proper home in the nomicon! If you want to tackle this issue, please add the documentation there. |
Yup; that repo is the appropriate place now. Closing! |
I've opened rust-lang-nursery/nomicon#23 to port this issue over. |
In particular, only thin pointers are FFI safe, and not fat pointers. This is somewhat confusing.
rel: https://doc.rust-lang.org/nightly/nomicon/data.html
cc @gankro
The text was updated successfully, but these errors were encountered: