#[repr(C)]pub struct MetadataSectionHeader {
pub magic: [u8; 4],
pub version: u16,
pub format: u8,
pub reserved: u8,
pub size: u32,
pub crc: u32,
}Expand description
Metadata section header (16 bytes).
Placed after tombstone bitvec when Flags::HAS_METADATA flag is set.
§Layout
Total size: 16 bytes Alignment: 4 bytes
| Offset | Size | Field | Description |
|---|---|---|---|
| 0 | 4 | magic | “META” = [0x4D, 0x45, 0x54, 0x41] |
| 4 | 2 | version | Section format version (1) |
| 6 | 1 | format | Serialization format (1=Postcard) |
| 7 | 1 | reserved | Reserved for future use (0) |
| 8 | 4 | size | Size of serialized metadata |
| 12 | 4 | crc | CRC32 of serialized metadata |
§Thread Safety
This type is Send + Sync as it is a POD struct.
Fields§
§magic: [u8; 4]Magic number: “META” = [0x4D, 0x45, 0x54, 0x41]
version: u16Section format version (currently 1)
format: u8Serialization format: 1=Postcard, 2=JSON
reserved: u8Reserved for future use (must be 0)
size: u32Size of serialized metadata in bytes
crc: u32CRC32 of serialized metadata bytes
Implementations§
Source§impl MetadataSectionHeader
impl MetadataSectionHeader
Sourcepub const FORMAT_POSTCARD: u8 = FORMAT_POSTCARD
pub const FORMAT_POSTCARD: u8 = FORMAT_POSTCARD
Postcard serialization format identifier.
Sourcepub const FORMAT_JSON: u8 = FORMAT_JSON
pub const FORMAT_JSON: u8 = FORMAT_JSON
JSON serialization format identifier.
Sourcepub fn new_postcard(size: u32, crc: u32) -> Self
pub fn new_postcard(size: u32, crc: u32) -> Self
Creates a new MetadataSectionHeader for Postcard-serialized metadata.
Sourcepub fn new_json(size: u32, crc: u32) -> Self
pub fn new_json(size: u32, crc: u32) -> Self
Creates a new MetadataSectionHeader for JSON-serialized metadata.
Sourcepub fn from_bytes(bytes: &[u8]) -> Result<Self, MetadataHeaderError>
pub fn from_bytes(bytes: &[u8]) -> Result<Self, MetadataHeaderError>
Sourcepub fn validate_magic(&self) -> Result<(), MetadataHeaderError>
pub fn validate_magic(&self) -> Result<(), MetadataHeaderError>
Validates the magic bytes.
§Errors
Returns MetadataHeaderError::InvalidMagic if magic bytes don’t match “META”.
Sourcepub fn validate_version(&self) -> Result<(), MetadataHeaderError>
pub fn validate_version(&self) -> Result<(), MetadataHeaderError>
Validates the version is supported.
§Errors
Returns MetadataHeaderError::UnsupportedVersion if version is newer than current.
Sourcepub fn validate_format(&self) -> Result<(), MetadataHeaderError>
pub fn validate_format(&self) -> Result<(), MetadataHeaderError>
Validates the serialization format is supported.
§Errors
Returns MetadataHeaderError::UnsupportedFormat if format is not 1 (Postcard) or 2 (JSON).
Sourcepub fn is_postcard(&self) -> bool
pub fn is_postcard(&self) -> bool
Returns true if this header uses Postcard serialization.
Trait Implementations§
Source§impl Clone for MetadataSectionHeader
impl Clone for MetadataSectionHeader
Source§fn clone(&self) -> MetadataSectionHeader
fn clone(&self) -> MetadataSectionHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MetadataSectionHeader
impl Debug for MetadataSectionHeader
impl Copy for MetadataSectionHeader
impl Pod for MetadataSectionHeader
Auto Trait Implementations§
impl Freeze for MetadataSectionHeader
impl RefUnwindSafe for MetadataSectionHeader
impl Send for MetadataSectionHeader
impl Sync for MetadataSectionHeader
impl Unpin for MetadataSectionHeader
impl UnsafeUnpin for MetadataSectionHeader
impl UnwindSafe for MetadataSectionHeader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.