pub unsafe trait RawDeviceId {
type RawType: Copy;
}Expand description
Marker trait to indicate a Rust device ID type represents a corresponding C device ID type.
This is meant to be implemented by buses/subsystems so that they can use IdTable to
guarantee (at compile-time) zero-termination of device id tables provided by drivers.
§Safety
Implementers must ensure that Self is layout-compatible with RawDeviceId::RawType;
i.e. it’s safe to transmute to RawDeviceId.
This requirement is needed so IdArray::new can convert Self to RawType when building
the ID table.
Ideally, this should be achieved using a const function that does conversion instead of
transmute; however, const trait functions relies on const_trait_impl unstable feature,
which is broken/gone in Rust 1.73.