-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
C-discussionCategory: Discussion or questions that doesn't represent issues with `libc`.Category: Discussion or questions that doesn't represent issues with `libc`.
Milestone
Description
A number of C structures make use of a flexible array member:
struct sockaddr {
sa_family_t sa_family; /* Address family */
char sa_data[]; /* Socket address */
};When mapped to Rust, most of these are a public field of type [T; 0]. We could instead map them to Rust unsized [c_char] fields.
The current pattern has a few advantages over using DSTs:
size_ofworks to get you the base size- You can
offset_ofthe field to get the start of the array if you need it - You can work with the type through references, they don't need to be constructed as fat pointers
- Rust's flexible array members aren't all that convenient to work with
I expect we'll probably want to stick with the current pattern, but it's worth double checking that there isn't something better for 1.0.
Metadata
Metadata
Assignees
Labels
C-discussionCategory: Discussion or questions that doesn't represent issues with `libc`.Category: Discussion or questions that doesn't represent issues with `libc`.