1use crate::{TagHeader, TagType};
4use core::mem;
5use multiboot2_common::{MaybeDynSized, Tag};
6
7#[derive(Debug)]
9#[repr(C, align(8))]
10pub struct EndTag {
11 header: TagHeader,
12}
13
14impl Default for EndTag {
15 fn default() -> Self {
16 Self {
17 header: TagHeader::new(Self::ID, mem::size_of::<Self>() as u32),
18 }
19 }
20}
21
22impl MaybeDynSized for EndTag {
23 type Header = TagHeader;
24
25 const BASE_SIZE: usize = mem::size_of::<Self>();
26
27 fn dst_len(_: &TagHeader) {}
28}
29
30impl Tag for EndTag {
31 type IDType = TagType;
32
33 const ID: TagType = TagType::End;
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39
40 #[test]
41 fn test_end_tag_size() {
43 unsafe {
44 core::mem::transmute::<[u8; 8], EndTag>([0u8; 8]);
45 }
46 }
47}