rust: qdev: make ObjectImpl a supertrait of DeviceImpl

In practice it has to be implemented always in order to access an
implementation of ClassInitImpl<ObjectClass>.  Make the relationship
explicit in the code.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2025-01-07 12:01:18 +01:00
parent 688c674158
commit 68da5402df

View file

@ -17,12 +17,12 @@ use crate::{
callbacks::FnCall, callbacks::FnCall,
cell::bql_locked, cell::bql_locked,
prelude::*, prelude::*,
qom::{ClassInitImpl, ObjectClass, Owned}, qom::{ClassInitImpl, ObjectClass, ObjectImpl, Owned},
vmstate::VMStateDescription, vmstate::VMStateDescription,
}; };
/// Trait providing the contents of [`DeviceClass`]. /// Trait providing the contents of [`DeviceClass`].
pub trait DeviceImpl { pub trait DeviceImpl: ObjectImpl {
/// _Realization_ is the second stage of device creation. It contains /// _Realization_ is the second stage of device creation. It contains
/// all operations that depend on device properties and can fail (note: /// all operations that depend on device properties and can fail (note:
/// this is not yet supported for Rust devices). /// this is not yet supported for Rust devices).