pub struct WalFileHeader {
pub page_size: u32,
pub checkpoint_seq: u32,
pub salt: WalSalt,
}Expand description
R858-B18 — the 32-byte -wal file header, read straight off disk with no
engine open. Ground truth about which WAL generation is on disk and how far
it has been written, independent of anything turso caches.
Only the three fields that move are kept. The rest of the header (magic, format version, the two header checksums) is either constant for a given build or a function of these; a change to any of it that did not move one of these three would not be a change this crate can act on.
Fields§
§page_size: u32Page size the WAL’s frames carry (bytes 8..12).
checkpoint_seq: u32Checkpoint sequence (bytes 12..16) — the field tail_frames used to key
restart detection on before WalGeneration paired it with the salt.
salt: WalSaltThe generation’s salt (bytes 16..24).
Implementations§
Source§impl WalFileHeader
impl WalFileHeader
Sourcepub fn parse(bytes: &[u8]) -> Option<Self>
pub fn parse(bytes: &[u8]) -> Option<Self>
Parse a WAL header out of the first Self::SIZE bytes of a -wal
file. None for anything shorter — a truncated or freshly-created WAL
has no generation to name yet, which is an honest unknown rather than an
error (see WalGeneration’s salt: None).
Trait Implementations§
Source§impl Clone for WalFileHeader
impl Clone for WalFileHeader
Source§fn clone(&self) -> WalFileHeader
fn clone(&self) -> WalFileHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for WalFileHeader
Source§impl Debug for WalFileHeader
impl Debug for WalFileHeader
impl Eq for WalFileHeader
Source§impl PartialEq for WalFileHeader
impl PartialEq for WalFileHeader
impl StructuralPartialEq for WalFileHeader
Auto Trait Implementations§
impl Freeze for WalFileHeader
impl RefUnwindSafe for WalFileHeader
impl Send for WalFileHeader
impl Sync for WalFileHeader
impl Unpin for WalFileHeader
impl UnsafeUnpin for WalFileHeader
impl UnwindSafe for WalFileHeader
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
Source§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more