pub trait Lockable: Sized {
    type Deadline: Sized + Codec + Clone;

    // Required methods
    fn deadline(&self) -> Self::Deadline;
    fn has_expired(deadline: &Self::Deadline) -> bool;

    // Provided method
    fn snooze(_deadline: &Self::Deadline) { ... }
}
Expand description

Lockable item for use with a persisted storage lock.

Bound for an item that has a stateful ordered meaning without explicitly requiring Ord trait in general.

Required Associated Types§

source

type Deadline: Sized + Codec + Clone

An instant type specifying i.e. a point in time.

Required Methods§

source

fn deadline(&self) -> Self::Deadline

Calculate the deadline based on a current state such as time or block number and derives the deadline.

source

fn has_expired(deadline: &Self::Deadline) -> bool

Verify the deadline has not expired compared to the current state, i.e. time or block number.

Provided Methods§

source

fn snooze(_deadline: &Self::Deadline)

Snooze at least until deadline is reached.

Note that deadline is only passed to allow optimizations for Lockables which have a time based component.

Object Safety§

This trait is not object safe.

Implementors§