On Tue, Oct 22, 2024 at 11:33 PM Danilo Krummrich <dakr@xxxxxxxxxx> wrote: > +/// Drivers must implement this trait in order to get a platform driver registered. Please refer to > +/// the `Adapter` documentation for an example. > +pub trait Driver { > + /// The type holding information about each device id supported by the driver. > + /// > + /// TODO: Use associated_type_defaults once stabilized: > + /// > + /// type IdInfo: 'static = (); > + type IdInfo: 'static; > + > + /// The table of device ids supported by the driver. > + const ID_TABLE: IdTable<Self::IdInfo>; > + > + /// Platform driver probe. > + /// > + /// Called when a new platform device is added or discovered. > + /// Implementers should attempt to initialize the device here. > + fn probe(dev: &mut Device, id_info: Option<&Self::IdInfo>) -> Result<Pin<KBox<Self>>>; This forces the user to put their driver data in a KBox, but they might want to use an Arc instead. You don't actually *need* a KBox - any ForeignOwnable seems to fit your purposes. Please see my miscdevice and shrinker patchsets for examples of how you can extend this to allow any ForeignOwnable. Alice