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.