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


Reply via email to