diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7b71b8..fa869db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: - toolchain: 1.69.0 + toolchain: 1.70.0 components: rustfmt - run: cargo fmt --check - run: cargo check --all-features diff --git a/Cargo.toml b/Cargo.toml index 9ef8641..d00af18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,15 +6,15 @@ description = "Decode SMBIOS/DMI information into accessible data structures" documentation = "https://docs.rs/dmidecode/" repository = "https://github.com/jcreekmore/dmidecode" license = "MIT" -rust-version = "1.69" +rust-version = "1.70" +edition = "2021" [dependencies] -bitflags = "1.2" +bitflags = "2.9.1" uuid = "1.17.0" [dev-dependencies] -pretty_assertions = "0.6" -lazy_static = "1.4" +pretty_assertions = "1.4.1" [features] default = ["std"] diff --git a/src/bitfield.rs b/src/bitfield.rs index b4ff490..6878c96 100644 --- a/src/bitfield.rs +++ b/src/bitfield.rs @@ -84,7 +84,6 @@ pub trait BitField<'a> { /// /// ```ignore /// # #[macro_use] -/// # extern crate dmidecode; /// # use dmidecode::bitfield::{FlagType, Layout}; /// # fn main() { /// layout!( diff --git a/src/lib.rs b/src/lib.rs index 93a508a..42584bd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -59,12 +59,6 @@ #[cfg(any(feature = "std", test))] #[macro_use] extern crate std; -#[macro_use] -extern crate bitflags; -#[cfg(test)] -extern crate lazy_static; -#[cfg(test)] -extern crate pretty_assertions; use core::array::TryFromSliceError; use core::convert::TryInto; @@ -158,19 +152,14 @@ impl EntryPoint { /// # Example /// /// ``` - /// # extern crate dmidecode; - /// # use std::error::Error; /// use dmidecode::EntryPoint; - /// # fn try_main() -> Result<(), Box> { - /// # /// const DMIDECODE_BIN: &'static [u8] = include_bytes!("../tests/data/dmidecode.bin"); /// - /// let entry_point = EntryPoint::search(DMIDECODE_BIN)?; + /// let entry_point = EntryPoint::search(DMIDECODE_BIN).unwrap(); /// for s in entry_point.structures(&DMIDECODE_BIN[entry_point.smbios_address() as usize..]) { - /// let table = s?; + /// let table = s.unwrap(); + /// // process raw... /// } - /// Ok(()) - /// # } /// ``` pub fn structures<'buffer>(&self, buffer: &'buffer [u8]) -> Structures<'buffer> { Structures { @@ -186,7 +175,6 @@ impl EntryPoint { /// # Example /// /// ``` - /// # extern crate dmidecode; /// use dmidecode::EntryPoint; /// /// const ENTRY_BIN: &'static [u8] = include_bytes!("../tests/data/entry.bin"); diff --git a/src/structures/000_bios.rs b/src/structures/000_bios.rs index 5ebc8b5..86f43b1 100644 --- a/src/structures/000_bios.rs +++ b/src/structures/000_bios.rs @@ -81,7 +81,7 @@ impl<'buffer> Bios<'buffer> { pub(crate) fn try_from(structure: RawStructure<'buffer>) -> Result, MalformedStructureError> { #[repr(C)] #[repr(packed)] - struct BiosPacked_3_1 { + struct BiosPacked3_1 { vendor: u8, bios_version: u8, bios_starting_address_segment: u16, @@ -99,7 +99,7 @@ impl<'buffer> Bios<'buffer> { #[repr(C)] #[repr(packed)] - struct BiosPacked_2_4 { + struct BiosPacked2_4 { vendor: u8, bios_version: u8, bios_starting_address_segment: u16, @@ -116,7 +116,7 @@ impl<'buffer> Bios<'buffer> { #[repr(C)] #[repr(packed)] - struct BiosPacked_2_0 { + struct BiosPacked2_0 { vendor: u8, bios_version: u8, bios_starting_address_segment: u16, @@ -127,7 +127,7 @@ impl<'buffer> Bios<'buffer> { match structure.version { v if v >= (3, 1).into() => { - let_as_struct!(packed, BiosPacked_3_1, structure.data); + let_as_struct!(packed, BiosPacked3_1, structure.data); Ok(Bios { handle: structure.handle, vendor: structure.find_string(packed.vendor)?, @@ -156,7 +156,7 @@ impl<'buffer> Bios<'buffer> { }) } v if v >= (2, 4).into() => { - let_as_struct!(packed, BiosPacked_2_4, structure.data); + let_as_struct!(packed, BiosPacked2_4, structure.data); Ok(Bios { handle: structure.handle, vendor: structure.find_string(packed.vendor)?, @@ -185,7 +185,7 @@ impl<'buffer> Bios<'buffer> { }) } _ => { - let_as_struct!(packed, BiosPacked_2_0, structure.data); + let_as_struct!(packed, BiosPacked2_0, structure.data); Ok(Bios { handle: structure.handle, vendor: structure.find_string(packed.vendor)?, @@ -355,9 +355,8 @@ impl fmt::Display for FirmwareRevision { #[cfg(test)] mod tests { - use std::prelude::v1::*; + use std::{prelude::v1::*, sync::OnceLock}; - use lazy_static::lazy_static; use pretty_assertions::assert_eq; use super::*; @@ -365,8 +364,10 @@ mod tests { const PRIMES: &[usize] = &[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]; const DMIDECODE_BIN: &[u8] = include_bytes!("../../tests/data/dmi.0.bin"); - lazy_static! { - static ref ENTRY_POINT: crate::EntryPoint = crate::EntryPoint::search(DMIDECODE_BIN).unwrap(); + + fn entrypoint() -> &'static crate::EntryPoint { + static ENTRYPOINT: OnceLock = OnceLock::new(); + ENTRYPOINT.get_or_init(|| crate::EntryPoint::search(DMIDECODE_BIN).unwrap()) } #[test] @@ -542,8 +543,8 @@ mod tests { minor: 0xFF, }), }; - let bios_result = ENTRY_POINT - .structures(&DMIDECODE_BIN[(ENTRY_POINT.smbios_address() as usize)..]) + let bios_result = entrypoint() + .structures(&DMIDECODE_BIN[(entrypoint().smbios_address() as usize)..]) .find_map(|s| { if let Ok(crate::Structure::Bios(bios)) = s { Some(bios) @@ -580,8 +581,8 @@ mod tests { "Targeted content distribution is supported", "UEFI is supported", ]; - let bios_result = ENTRY_POINT - .structures(&DMIDECODE_BIN[(ENTRY_POINT.smbios_address() as usize)..]) + let bios_result = entrypoint() + .structures(&DMIDECODE_BIN[(entrypoint().smbios_address() as usize)..]) .find_map(|s| { if let Ok(crate::Structure::Bios(bios)) = s { Some(bios) @@ -607,8 +608,8 @@ mod tests { fn dmi_bin_revisions() { let bios_revision = "2.8"; let firmware_revision = "N/A"; - let bios_result = ENTRY_POINT - .structures(&DMIDECODE_BIN[(ENTRY_POINT.smbios_address() as usize)..]) + let bios_result = entrypoint() + .structures(&DMIDECODE_BIN[(entrypoint().smbios_address() as usize)..]) .find_map(|s| { if let Ok(crate::Structure::Bios(bios)) = s { Some(bios) @@ -632,8 +633,8 @@ mod tests { #[test] fn dmi_bin_bios_size() { let size = 32u64 << 20; - let bios_result = ENTRY_POINT - .structures(&DMIDECODE_BIN[(ENTRY_POINT.smbios_address() as usize)..]) + let bios_result = entrypoint() + .structures(&DMIDECODE_BIN[(entrypoint().smbios_address() as usize)..]) .find_map(|s| { if let Ok(crate::Structure::Bios(bios)) = s { Some(bios) diff --git a/src/structures/001_system.rs b/src/structures/001_system.rs index edd708c..603bc16 100644 --- a/src/structures/001_system.rs +++ b/src/structures/001_system.rs @@ -84,7 +84,7 @@ impl<'buffer> System<'buffer> { #[repr(C)] #[repr(packed)] - struct SystemPacked_2_0 { + struct SystemPacked2_0 { manufacturer: u8, product: u8, version: u8, @@ -93,22 +93,22 @@ impl<'buffer> System<'buffer> { #[repr(C)] #[repr(packed)] - struct SystemPacked_2_1 { - v2_0: SystemPacked_2_0, + struct SystemPacked2_1 { + v2_0: SystemPacked2_0, uuid: wrapper::UuidRepr, wakeup: u8, } #[repr(C)] #[repr(packed)] - struct SystemPacked_2_4 { - v2_1: SystemPacked_2_1, + struct SystemPacked2_4 { + v2_1: SystemPacked2_1, sku: u8, family: u8, } if structure.version < (2, 1).into() { - let_as_struct!(packed, SystemPacked_2_0, structure.data); + let_as_struct!(packed, SystemPacked2_0, structure.data); Ok(System { handle: structure.handle, @@ -122,7 +122,7 @@ impl<'buffer> System<'buffer> { family: None, }) } else if structure.version < (2, 4).into() { - let_as_struct!(packed, SystemPacked_2_1, structure.data); + let_as_struct!(packed, SystemPacked2_1, structure.data); Ok(System { handle: structure.handle, @@ -136,7 +136,7 @@ impl<'buffer> System<'buffer> { family: None, }) } else { - let_as_struct!(packed, SystemPacked_2_4, structure.data); + let_as_struct!(packed, SystemPacked2_4, structure.data); Ok(System { handle: structure.handle, diff --git a/src/structures/002_baseboard.rs b/src/structures/002_baseboard.rs index 99128d6..ff360d9 100644 --- a/src/structures/002_baseboard.rs +++ b/src/structures/002_baseboard.rs @@ -4,6 +4,8 @@ //! motherboard, planar, server blade, or other standard system module). use core::fmt; +use bitflags::bitflags; + use crate::{MalformedStructureError, RawStructure}; /// The baseboard type defined in the SMBIOS specification. @@ -71,6 +73,7 @@ impl fmt::Display for BoardType { bitflags! { /// The baseboard characteristic flags defined in the SMBIOS specification. + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct BaseBoardFlags: u8 { const HOSTING = 0b0000_0001; const REQUIRES_DAUGHTER = 0b0000_0010; diff --git a/src/structures/003_enclosure.rs b/src/structures/003_enclosure.rs index 6f76975..eddd486 100644 --- a/src/structures/003_enclosure.rs +++ b/src/structures/003_enclosure.rs @@ -165,7 +165,7 @@ impl<'buffer> Enclosure<'buffer> { pub(crate) fn try_from(structure: RawStructure<'buffer>) -> Result, MalformedStructureError> { #[repr(C)] #[repr(packed)] - struct EnclosurePacked_2_0 { + struct EnclosurePacked2_0 { manufacturer: u8, enclosure_type: u8, version: u8, @@ -176,7 +176,7 @@ impl<'buffer> Enclosure<'buffer> { // compile time assertion that our minimum enclosure structure // fits the minimum required by the BIOS spec const _: () = { - assert!(core::mem::size_of::() + core::mem::size_of::() == 0x09); + assert!(core::mem::size_of::() + core::mem::size_of::() == 0x09); }; struct RawEnclosureType(u8); @@ -192,17 +192,17 @@ impl<'buffer> Enclosure<'buffer> { } } - if structure.data.len() < core::mem::size_of::() { + if structure.data.len() < core::mem::size_of::() { return Err(crate::MalformedStructureError::InvalidFormattedSectionLength( structure.info, structure.handle, "minimum of ", - core::mem::size_of::() as u8, + core::mem::size_of::() as u8, )); } - let (minimum, mut extra) = structure.data.split_at(core::mem::size_of::()); - let_as_struct!(packed, EnclosurePacked_2_0, minimum); + let (minimum, mut extra) = structure.data.split_at(core::mem::size_of::()); + let_as_struct!(packed, EnclosurePacked2_0, minimum); let enclosure_type = RawEnclosureType::new(packed.enclosure_type); let mut enclosure = Enclosure { handle: structure.handle, @@ -463,12 +463,12 @@ impl From<&[u8]> for ContainedElement { fn from(data: &[u8]) -> ContainedElement { #[repr(C)] #[repr(packed)] - struct ContainedElement_2_3 { + struct ContainedElement2_3 { type_: u8, minimum: u8, maximum: u8, } - let_as_struct!(packed, ContainedElement_2_3, data); + let_as_struct!(packed, ContainedElement2_3, data); ContainedElement { type_: packed.type_.into(), minimum: packed.minimum, diff --git a/src/structures/004_processor.rs b/src/structures/004_processor.rs index 808a3db..4dabf80 100644 --- a/src/structures/004_processor.rs +++ b/src/structures/004_processor.rs @@ -6,11 +6,10 @@ //! IntelSX2™ processor would have a structure to describe the main CPU and a second structure to //! describe the 80487 co1021 processor. -#[cfg(feature = "std")] -extern crate std; - use core::fmt; +use bitflags::bitflags; + use crate::{MalformedStructureError, RawStructure}; /// The processor types defined in the SMBIOS specification. @@ -42,6 +41,7 @@ impl From for ProcessorType { bitflags! { /// The processor status flags defined in the SMBIOS specification. + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ProcessorStatus: u8 { const CPU_SOCKET_POPULATED = 0b0100_0000; const CPU_ENABLED = 0b0000_0001; @@ -54,6 +54,7 @@ bitflags! { bitflags! { /// The processor characteristic flags defined in the SMBIOS specification. + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ProcessorCharacteristics: u16 { const RESERVED = 0b0000_0001; const UNKNOWN = 0b0000_0010; @@ -391,6 +392,7 @@ pub enum Voltage { bitflags! { /// Voltage Capability. A set bit indicates that the voltage is supported + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct VoltageLegacy: u8 { const VOLTAGE_CAPABILITY_5V0 = 0b0000_0001; const VOLTAGE_CAPABILITY_3V3 = 0b0000_0010; @@ -469,7 +471,7 @@ impl<'buffer> Processor<'buffer> { pub(crate) fn try_from(structure: RawStructure<'buffer>) -> Result, MalformedStructureError> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_2_0 { + struct ProcessorPacked2_0 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -486,7 +488,7 @@ impl<'buffer> Processor<'buffer> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_2_1 { + struct ProcessorPacked2_1 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -506,7 +508,7 @@ impl<'buffer> Processor<'buffer> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_2_3 { + struct ProcessorPacked2_3 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -529,7 +531,7 @@ impl<'buffer> Processor<'buffer> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_2_5 { + struct ProcessorPacked2_5 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -556,7 +558,7 @@ impl<'buffer> Processor<'buffer> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_2_6 { + struct ProcessorPacked2_6 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -584,7 +586,7 @@ impl<'buffer> Processor<'buffer> { #[repr(C)] #[repr(packed)] - struct ProcessorPacked_3_0 { + struct ProcessorPacked3_0 { socket_designation: u8, processor_type: u8, processor_family: u8, @@ -614,7 +616,7 @@ impl<'buffer> Processor<'buffer> { } if structure.version < (2, 1).into() { - let_as_struct!(packed, ProcessorPacked_2_0, structure.data); + let_as_struct!(packed, ProcessorPacked2_0, structure.data); Ok(Processor { handle: structure.handle, @@ -642,7 +644,7 @@ impl<'buffer> Processor<'buffer> { processor_characteristics: None, }) } else if structure.version < (2, 3).into() { - let_as_struct!(packed, ProcessorPacked_2_1, structure.data); + let_as_struct!(packed, ProcessorPacked2_1, structure.data); Ok(Processor { handle: structure.handle, @@ -670,7 +672,7 @@ impl<'buffer> Processor<'buffer> { processor_characteristics: None, }) } else if structure.version < (2, 5).into() { - let_as_struct!(packed, ProcessorPacked_2_3, structure.data); + let_as_struct!(packed, ProcessorPacked2_3, structure.data); Ok(Processor { handle: structure.handle, @@ -698,7 +700,7 @@ impl<'buffer> Processor<'buffer> { processor_characteristics: None, }) } else if structure.version < (2, 6).into() { - let_as_struct!(packed, ProcessorPacked_2_5, structure.data); + let_as_struct!(packed, ProcessorPacked2_5, structure.data); Ok(Processor { handle: structure.handle, @@ -726,7 +728,7 @@ impl<'buffer> Processor<'buffer> { processor_characteristics: None, }) } else if structure.version < (3, 0).into() { - let_as_struct!(packed, ProcessorPacked_2_6, structure.data); + let_as_struct!(packed, ProcessorPacked2_6, structure.data); // smbios spec specifies 0xFE as an indicator to obtain processor // family from the Processor Family 2 field. let processor_family = match packed.processor_family.into() { @@ -761,7 +763,7 @@ impl<'buffer> Processor<'buffer> { )), }) } else { - let_as_struct!(packed, ProcessorPacked_3_0, structure.data); + let_as_struct!(packed, ProcessorPacked3_0, structure.data); // smbios spec specifies 0xFE as an indicator to obtain processor // family from the Processor Family 2 field. let processor_family = match packed.processor_family.into() { diff --git a/src/structures/007_cache.rs b/src/structures/007_cache.rs index 068e4f1..db1ab72 100644 --- a/src/structures/007_cache.rs +++ b/src/structures/007_cache.rs @@ -7,6 +7,8 @@ use core::fmt; +use bitflags::bitflags; + use crate::{MalformedStructureError, RawStructure}; /// The `Cache Information` table defined in the SMBIOS specification. @@ -98,6 +100,7 @@ pub enum CacheSize { bitflags! { /// Cache SRAM Type is same for Supported SRAM Type and Current SRAM Type + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct CacheSramType: u16 { const OTHER = 0b0000_0001; const UNKNOWN = 0b0000_0010; @@ -167,7 +170,7 @@ impl<'buffer> Cache<'buffer> { pub(crate) fn try_from(structure: RawStructure<'buffer>) -> Result, MalformedStructureError> { #[repr(C)] #[repr(packed)] - struct CachePacked_3_1 { + struct CachePacked3_1 { socket_designation: u8, cache_configuration: u16, maximum_cache_size: u16, @@ -184,7 +187,7 @@ impl<'buffer> Cache<'buffer> { #[repr(C)] #[repr(packed)] - struct CachePacked_2_1 { + struct CachePacked2_1 { socket_designation: u8, cache_configuration: u16, maximum_cache_size: u16, @@ -199,7 +202,7 @@ impl<'buffer> Cache<'buffer> { #[repr(C)] #[repr(packed)] - struct CachePacked_2_0 { + struct CachePacked2_0 { socket_designation: u8, cache_configuration: u16, maximum_cache_size: u16, @@ -210,7 +213,7 @@ impl<'buffer> Cache<'buffer> { match structure.version { v if v > (3, 1).into() => { - let_as_struct!(packed, CachePacked_3_1, structure.data); + let_as_struct!(packed, CachePacked3_1, structure.data); Ok(Cache { handle: structure.handle, socket_designation: structure.find_string(packed.socket_designation)?, @@ -228,7 +231,7 @@ impl<'buffer> Cache<'buffer> { }) } v if v > (2, 1).into() => { - let_as_struct!(packed, CachePacked_2_1, structure.data); + let_as_struct!(packed, CachePacked2_1, structure.data); Ok(Cache { handle: structure.handle, socket_designation: structure.find_string(packed.socket_designation)?, @@ -246,7 +249,7 @@ impl<'buffer> Cache<'buffer> { }) } v if v > (2, 0).into() => { - let_as_struct!(packed, CachePacked_2_0, structure.data); + let_as_struct!(packed, CachePacked2_0, structure.data); Ok(Cache { handle: structure.handle, socket_designation: structure.find_string(packed.socket_designation)?, diff --git a/src/structures/013_bios_language.rs b/src/structures/013_bios_language.rs index 1b30d17..dd44d99 100644 --- a/src/structures/013_bios_language.rs +++ b/src/structures/013_bios_language.rs @@ -33,7 +33,7 @@ impl<'a> BiosLanguage<'a> { pub(crate) fn try_from(structure: RawStructure<'a>) -> Result, MalformedStructureError> { #[repr(C)] #[repr(packed)] - struct BiosLanguagePacked_2_1 { + struct BiosLanguagePacked2_1 { installable_languages: u8, flags: u8, reserved: [u8; 15], @@ -42,7 +42,7 @@ impl<'a> BiosLanguage<'a> { #[repr(C)] #[repr(packed)] - struct BiosLanguagePacked_2_0 { + struct BiosLanguagePacked2_0 { installable_languages: u8, reserved: [u8; 15], current_language: u8, @@ -50,7 +50,7 @@ impl<'a> BiosLanguage<'a> { match structure.version { v if v >= (2, 1).into() => { - let_as_struct!(packed, BiosLanguagePacked_2_1, structure.data); + let_as_struct!(packed, BiosLanguagePacked2_1, structure.data); Ok(BiosLanguage { handle: structure.handle, installable_languages: InstallableLanguages::new(structure), @@ -59,7 +59,7 @@ impl<'a> BiosLanguage<'a> { }) } _ => { - let_as_struct!(packed, BiosLanguagePacked_2_0, structure.data); + let_as_struct!(packed, BiosLanguagePacked2_0, structure.data); Ok(BiosLanguage { handle: structure.handle, installable_languages: InstallableLanguages::new(structure), @@ -104,16 +104,17 @@ impl BitField<'_> for LanguageFlags { #[cfg(test)] mod tests { - use std::prelude::v1::*; + use std::{prelude::v1::*, sync::OnceLock}; - use lazy_static::lazy_static; use pretty_assertions::assert_eq; use super::*; const DMIDECODE_BIN: &[u8] = include_bytes!("../../tests/data/dmi.0.bin"); - lazy_static! { - static ref ENTRY_POINT: crate::EntryPoint = crate::EntryPoint::search(DMIDECODE_BIN).unwrap(); + + fn entrypoint() -> &'static crate::EntryPoint { + static ENTRYPOINT: OnceLock = OnceLock::new(); + ENTRYPOINT.get_or_init(|| crate::EntryPoint::search(DMIDECODE_BIN).unwrap()) } #[test] @@ -176,8 +177,8 @@ mod tests { #[test] fn dmi_bin() { use crate::InfoType; - let bios_language_result = ENTRY_POINT - .structures(&DMIDECODE_BIN[(ENTRY_POINT.smbios_address() as usize)..]) + let bios_language_result = entrypoint() + .structures(&DMIDECODE_BIN[(entrypoint().smbios_address() as usize)..]) .find_map(|s| { if let Ok(crate::Structure::BiosLanguage(bl)) = s { Some(bl) diff --git a/src/structures/015_system_event_log/log_record_format.rs b/src/structures/015_system_event_log/log_record_format.rs index c1dc989..e7bae06 100644 --- a/src/structures/015_system_event_log/log_record_format.rs +++ b/src/structures/015_system_event_log/log_record_format.rs @@ -582,7 +582,7 @@ mod tests { #[test] fn post_results() { use super::PostResults; - use bitfield::{BitField, FlagType::Reserved, Position}; + use crate::bitfield::{BitField, FlagType::Reserved, Position}; let qword: u64 = 0b10101010000 << 32 | 0b101010; let pr: PostResults = qword.into(); diff --git a/src/structures/015_system_event_log/mod.rs b/src/structures/015_system_event_log/mod.rs index 41418a9..12abbc5 100644 --- a/src/structures/015_system_event_log/mod.rs +++ b/src/structures/015_system_event_log/mod.rs @@ -438,7 +438,7 @@ mod tests { #[test] fn log_status() { use super::LogStatus; - use bitfield::BitField; + use crate::bitfield::BitField; let byte: u8 = 0b111; let ls: LogStatus = byte.into(); diff --git a/src/structures/017_memory_device.rs b/src/structures/017_memory_device.rs index 4158b48..41cea72 100644 --- a/src/structures/017_memory_device.rs +++ b/src/structures/017_memory_device.rs @@ -5,6 +5,7 @@ //! This structure describes a single memory device that is part of a larger [Physical Memory //! Array](super::physical_memory_array "structures::physical_memory_array") (Type 16) //! structure. +use bitflags::bitflags; use crate::{ InfoType, @@ -254,6 +255,7 @@ impl From for Type { bitflags! { /// The memory device details + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Detail: u16 { const RESERVED = 0b0000000000000000; const OTHER = 0b0000000000000010; @@ -281,6 +283,7 @@ impl Default for Detail { } bitflags! { + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct OperatingModes: u16 { const RESERVED = 0b0000000000000000; const OTHER = 0b0000000000000010;