Signed-off-by: Paolo Bonzini <[email protected]>
---
rust/chardev/src/prelude.rs | 3 +++
rust/hw/char/pl011/src/device.rs | 5 +----
rust/hw/core/tests/tests.rs | 2 +-
rust/hw/timer/hpet/src/device.rs | 5 +----
rust/migration/meson.build | 1 +
rust/migration/src/lib.rs | 5 +++++
rust/migration/src/prelude.rs | 19 +++++++++++++++++++
rust/tests/tests/vmstate_tests.rs | 5 ++---
8 files changed, 33 insertions(+), 12 deletions(-)
create mode 100644 rust/chardev/src/prelude.rs
create mode 100644 rust/migration/src/prelude.rs
diff --git a/rust/chardev/src/prelude.rs b/rust/chardev/src/prelude.rs
new file mode 100644
index 00000000000..9f0b561bfab
--- /dev/null
+++ b/rust/chardev/src/prelude.rs
@@ -0,0 +1,3 @@
+//! Essential types and traits intended for blanket imports.
+
+pub use crate::chardev::{Chardev, CharFrontend, Event};
\ No newline at end of file
diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/device.rs
index 164f27d5bb2..2e4ccc9b231 100644
--- a/rust/hw/char/pl011/src/device.rs
+++ b/rust/hw/char/pl011/src/device.rs
@@ -8,10 +8,7 @@
use chardev::{CharFrontend, Chardev, Event};
use common::prelude::*;
use hwcore::{prelude::*, ClockEvent, IRQState};
-use migration::{
- self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields,
vmstate_of,
- vmstate_subsections, vmstate_unused, VMStateDescription,
VMStateDescriptionBuilder,
-};
+use migration::{self, prelude::*};
use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit};
use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder};
use util::prelude::*;
diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs
index b39d1501d5b..f38376d0016 100644
--- a/rust/hw/core/tests/tests.rs
+++ b/rust/hw/core/tests/tests.rs
@@ -6,7 +6,7 @@
use bql::BqlCell;
use hwcore::prelude::*;
-use migration::{VMStateDescription, VMStateDescriptionBuilder};
+use migration::prelude::*;
use qom::{prelude::*, ObjectImpl, ParentField};
use util::bindings::{module_call_init, module_init_type};
diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/device.rs
index 7ab9897cdfb..4ff1779a3d2 100644
--- a/rust/hw/timer/hpet/src/device.rs
+++ b/rust/hw/timer/hpet/src/device.rs
@@ -13,10 +13,7 @@
use bql::{BqlCell, BqlRefCell};
use common::prelude::*;
use hwcore::prelude::*;
-use migration::{
- self, impl_vmstate_struct, vmstate_fields, vmstate_of,
vmstate_subsections, vmstate_validate,
- VMStateDescription, VMStateDescriptionBuilder,
-};
+use migration::{self, prelude::*};
use qom::{prelude::*, ObjectImpl, ParentField, ParentInit};
use system::{
bindings::{address_space_memory, address_space_stl_le, hwaddr},
diff --git a/rust/migration/meson.build b/rust/migration/meson.build
index 444494700ad..d7af2129490 100644
--- a/rust/migration/meson.build
+++ b/rust/migration/meson.build
@@ -32,6 +32,7 @@ _migration_rs = static_library(
'src/lib.rs',
'src/bindings.rs',
'src/migratable.rs',
+ 'src/prelude.rs',
'src/vmstate.rs',
],
{'.' : _migration_bindings_inc_rs},
diff --git a/rust/migration/src/lib.rs b/rust/migration/src/lib.rs
index c9bdf0d4133..32e182e716a 100644
--- a/rust/migration/src/lib.rs
+++ b/rust/migration/src/lib.rs
@@ -7,5 +7,10 @@
pub mod migratable;
pub use migratable::*;
+// preserve one-item-per-"use" syntax, it is clearer
+// for prelude-like modules
+#[rustfmt::skip]
+pub mod prelude;
+
pub mod vmstate;
pub use vmstate::*;
diff --git a/rust/migration/src/prelude.rs b/rust/migration/src/prelude.rs
new file mode 100644
index 00000000000..797e7ec59d1
--- /dev/null
+++ b/rust/migration/src/prelude.rs
@@ -0,0 +1,19 @@
+//! Essential types and traits intended for blanket imports.
+
+// Core migration traits and types
+pub use crate::vmstate::VMState;
+pub use crate::vmstate::VMStateDescription;
+pub use crate::vmstate::VMStateDescriptionBuilder;
+
+// Migratable wrappers
+pub use crate::migratable::Migratable;
+pub use crate::ToMigrationState;
+
+// Commonly used macros
+pub use crate::impl_vmstate_forward;
+pub use crate::impl_vmstate_struct;
+pub use crate::vmstate_fields;
+pub use crate::vmstate_of;
+pub use crate::vmstate_subsections;
+pub use crate::vmstate_unused;
+pub use crate::vmstate_validate;
diff --git a/rust/tests/tests/vmstate_tests.rs
b/rust/tests/tests/vmstate_tests.rs
index fa9bbd6a122..c3f9e1c7436 100644
--- a/rust/tests/tests/vmstate_tests.rs
+++ b/rust/tests/tests/vmstate_tests.rs
@@ -16,9 +16,8 @@
vmstate_info_bool, vmstate_info_int32, vmstate_info_int64,
vmstate_info_int8,
vmstate_info_uint64, vmstate_info_uint8, vmstate_info_unused_buffer,
VMStateFlags,
},
- impl_vmstate_forward, impl_vmstate_struct,
- vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField},
- vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate,
+ prelude::*,
+ vmstate::VMStateField,
};
const FOO_ARRAY_MAX: usize = 3;
--
2.51.1