Skip to main content

LeapMode

Enum LeapMode 

Source
pub enum LeapMode {
    Slew,
    Step,
    Ignore,
}
Expand description

What to do about a leap second the upstream source has announced.

A leap second is the one correction a time daemon can see coming. The server sets the leap indicator during the UTC day it happens, and at midnight the second is inserted or removed — every client sees a one-second step at the same instant.

Handling it is not optional in the way it looks. Unhandled, the step arrives as an ordinary offset and is corrected like any other, which takes about twelve seconds at the slew ceiling and leaves the clock a whole second wrong meanwhile. Worse, and this is the case that matters: with max_change_s set below one second the guard REFUSES it, and since every node in a fleet sees the same leap at the same moment, every node exhausts its allowance and exits together. A safety limit turning into a synchronised outage on a date known years in advance is not a hypothetical failure mode.

Variants§

§

Slew

Slew the second in like any other offset, but exempt from the maximum-change guard because it is expected, bounded and announced.

§

Step

Step it, which is what a machine that cannot tolerate a slow second wants — and what most operating systems do natively.

§

Ignore

Take no special action. The step is then an ordinary offset, and the maximum-change guard applies to it like anything else.

Trait Implementations§

Source§

impl Clone for LeapMode

Source§

fn clone(&self) -> LeapMode

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 Copy for LeapMode

Source§

impl Debug for LeapMode

Source§

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

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

impl Eq for LeapMode

Source§

impl PartialEq for LeapMode

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for LeapMode

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 = !

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.