diff --git a/src/common/instructions.rs b/src/common/instructions.rs index c820622..5343d91 100644 --- a/src/common/instructions.rs +++ b/src/common/instructions.rs @@ -1,9 +1,4 @@ -use crate::common::instructions::{ - args::{ITypeArgs, RTypeArgs}, - encode::Encode, - errors::InstructionDecodeError, - errors::RegisterParseError, -}; +use crate::common::{instructions::encode::Encode, prelude::*}; #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub enum Interrupt { @@ -408,3 +403,6 @@ impl TryFrom for Instruction { pub mod args; mod encode; pub mod errors; + +#[cfg(test)] +mod tests; diff --git a/src/common/instructions/args.rs b/src/common/instructions/args.rs index 80528da..33cee92 100644 --- a/src/common/instructions/args.rs +++ b/src/common/instructions/args.rs @@ -1,8 +1,7 @@ //! Various types of arguments that instructions can take, alongside encoding and decoding logic. -use crate::common::instructions::{RegisterParseError, encode::Encode}; - -use super::Register; +use crate::common::instructions::Encode; +use crate::common::prelude::*; /// A list of errors that can be returned when decoding instruction arguments. #[derive(Debug)] diff --git a/src/common/instructions/encode.rs b/src/common/instructions/encode.rs index fae328c..2ad0345 100644 --- a/src/common/instructions/encode.rs +++ b/src/common/instructions/encode.rs @@ -1,6 +1,4 @@ -use crate::common::instructions::Register; - -use super::Instruction; +use crate::common::prelude::*; /// Not to be used directly, just call [`Instruction::encode`]. pub trait Encode { diff --git a/src/common/instructions/errors.rs b/src/common/instructions/errors.rs index c5936d7..fe99bdb 100644 --- a/src/common/instructions/errors.rs +++ b/src/common/instructions/errors.rs @@ -1,6 +1,6 @@ //! All the errors that may be returned from [`instructions`]. -use super::args::ArgsDecodeError; +use crate::common::prelude::*; #[derive(Debug)] /// Error type for parsing register numbers. diff --git a/src/common/tests.rs b/src/common/instructions/tests.rs similarity index 98% rename from src/common/tests.rs rename to src/common/instructions/tests.rs index 9ca6683..267ff19 100644 --- a/src/common/tests.rs +++ b/src/common/instructions/tests.rs @@ -1,6 +1,4 @@ -use crate::common::instructions::args::{ITypeArgs, RTypeArgs}; - -use super::instructions::*; +use crate::common::prelude::*; #[test] fn test_opcode_nop() { diff --git a/src/common/mod.rs b/src/common/mod.rs index 7173b3f..3d6cec3 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -1,4 +1,8 @@ pub mod instructions; -#[cfg(test)] -mod tests; +pub mod prelude { + //! A collection of types you should definitely import when working with this crate. + pub use super::instructions::{ + Address, Instruction, InstructionType, Interrupt, Register, args::*, errors::*, + }; +} diff --git a/src/emulator/system/model.rs b/src/emulator/system/model.rs index b6859db..047854b 100644 --- a/src/emulator/system/model.rs +++ b/src/emulator/system/model.rs @@ -1,4 +1,4 @@ -use crate::common::instructions::{Address, Interrupt, Register}; +use crate::common::prelude::*; #[derive(PartialEq, Eq, Debug, Clone, Copy)] pub enum Running {