There are 5 winapi families:
WINAPI_FAMILY_PC_APPWINAPI_FAMILY_PHONE_APPWINAPI_FAMILY_SYSTEMWINAPI_FAMILY_SERVERWINAPI_FAMILY_DESKTOP_APP
- A crate that depends on
winapishould specify the set of winapi families that it supports. - A single winapi family is chosen for an entire project, and the user has control over which family this is.
winapiis compiled for this family and informs all downstream crates which family it was compiled for so they can configure their code correctly.- If a crate doesn't specify that it supports the current winapi family, compilation should fail early with a nice error message indicating that the crate doesn't support the current winapi family. Otherwise the user would be confronted with confusing error messages about unresolved symbols.