|
@@ -5,6 +5,7 @@ use crate::{
|
|
|
EntryAddressHeaderTag, EntryEfi32HeaderTag, EntryEfi64HeaderTag, FramebufferHeaderTag,
|
|
|
InformationRequestHeaderTag, ModuleAlignHeaderTag, Multiboot2BasicHeader, RelocatableHeaderTag,
|
|
|
};
|
|
|
+use alloc::vec::Vec;
|
|
|
use core::mem::size_of;
|
|
|
|
|
|
/// Trait for all tags that helps to create a byte array from the tag.
|
|
@@ -24,13 +25,10 @@ pub(crate) trait StructAsBytes: Sized {
|
|
|
|
|
|
/// Returns the structure as a vector of its bytes.
|
|
|
/// The length is determined by [`Self::byte_size`].
|
|
|
- fn struct_as_bytes(&self) -> alloc::vec::Vec<u8> {
|
|
|
+ fn struct_as_bytes(&self) -> Vec<u8> {
|
|
|
let ptr = self.as_ptr();
|
|
|
- let mut vec = alloc::vec::Vec::with_capacity(self.byte_size());
|
|
|
- for i in 0..self.byte_size() {
|
|
|
- vec.push(unsafe { *ptr.add(i) })
|
|
|
- }
|
|
|
- vec
|
|
|
+ let bytes = unsafe { core::slice::from_raw_parts(ptr, self.byte_size()) };
|
|
|
+ Vec::from(bytes)
|
|
|
}
|
|
|
}
|
|
|
|