Skip to main content

SyncMode

Enum SyncMode 

Source
pub enum SyncMode {
    Full,
    Normal,
    Off,
}
Expand description

Durability mode for FileHandle::sync_data.

SyncMode is the user-visible knob that selects the cross-platform fsync primitive obj calls after a WAL commit. The contract for each variant is documented in docs/format.md § SyncMode.

The default is SyncMode::Full: a commit that returns Ok(()) is durable across a system-wide power loss. Normal is the throughput-tuned middle ground; Off skips the syscall and is only safe for tests and benchmarks.

Power-of-ten Rule 5: a three-state enum is far cheaper to audit than three bool knobs, and the variants are exhaustive at every match.

Variants§

§

Full

Strongest durability. Survives system-wide power loss.

Maps to fcntl(F_FULLFSYNC) on macOS (forces the drive cache to flush), FlushFileBuffers on Windows, and fdatasync on Linux / BSDs. macOS’s plain fsync is not sufficient here — it does not flush the drive cache; F_FULLFSYNC does. This is the standard wisdom for safety-critical macOS storage.

§

Normal

Process-crash and kernel-panic durability; may lose data on a sudden power loss if the drive’s write cache has not been flushed by the time the OS acknowledges the call.

Maps to fsync on Unix and FlushFileBuffers on Windows. On Windows there is no weaker primitive than FlushFileBuffers, so Normal and Full are equivalent there.

§

Off

No durability call. The OS may write the data eventually, but obj does not ask it to. Use only for tests and benchmarks where data loss is acceptable.

Trait Implementations§

Source§

impl Clone for SyncMode

Source§

fn clone(&self) -> SyncMode

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SyncMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SyncMode

Source§

fn default() -> SyncMode

Returns the “default value” for a type. Read more
Source§

impl PartialEq for SyncMode

Source§

fn eq(&self, other: &SyncMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for SyncMode

Source§

impl Eq for SyncMode

Source§

impl StructuralPartialEq for SyncMode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V