Open
Description
Currently bindgen will generate code that derives for opaque types, e.g.:
typedef struct MyOpaqueStruct MyOpaqueStruct;
#[derive(Copy, Clone, Debug)]
pub struct MyOpaqueStruct {
_unused: [u8; 0],
}
This has several problems:
- If a user can obtain a reference to a type they can clone it, even though that is normally only possible through FFI calls, and will almost always result in UB
- It prevents a user from implementing those traits on their own
The only current solution seems to be to turn of those derivations completely, forcing a user to implement them manually on the non-opaque types.
I would suggest to just not derive any of these in case of an opaque struct (since I cannot come up with a use-case were they would actually work)