Error

Enum Error 

Source
pub enum Error {
    IdSegInvalid,
    EpochInvalid,
    SequenceInvalid,
    TimestampMaxReached,
    SequenceMaxReached(Duration),
    TimestampError,
    MutexError,
    InvalidId,
    TooManySegments,
}
Expand description

possible errors for Snowclouds/Snowflakes

since the errors are not very complex no additional information is provided except for SequenceMaxReached that provides the duration to the next millisecond.

this error implements NextAvailId if being used in a generic way.

use snowcloud::Error::SequenceMaxReached;
type MyFlake = snowcloud::i64::SingleIdFlake<43, 8, 12>;
type MyCloud = snowcloud::Generator<MyFlake>;

const START_TIME: u64 = 1679587200000;

let mut cloud = MyCloud::new(START_TIME, 1)
    .expect("failed to create MyCloud");

match cloud.next_id() {
    Ok(flake) => {
        println!("{}", flake.id());
    },
    Err(err) => {
        match err {
            SequenceMaxReached(dur) => {
                // we can wait for the specified duration to try again
            },
            _ => {
                println!("{}", err);
            }
        }
    }
}

Variants§

§

IdSegInvalid

a provided id seg is invalid.

§

EpochInvalid

a provided epoch is invalid

§

SequenceInvalid

a provided sequence is less than 0 or greater than the max value specified by a Snowflake

§

TimestampMaxReached

the max possible timestamp value has been reached when generating a new id

§

SequenceMaxReached(Duration)

the max possible sequence value has been reached when generating a new id. the returned duration is an estimate on how long to wait for the next millisecond

§

TimestampError

failed to get a valid UNIX EPOCH timestamp

§

MutexError

error when attempting to lock a mutex

§

InvalidId

the provided i64 is not a valid Snowflake

§

TooManySegments

provided too many segments for creating a Snowflake

Trait Implementations§

Source§

impl Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Error for Error

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<SystemTimeError> for Error

Source§

fn from(_: SystemTimeError) -> Error

Converts to this type from the input type.
Source§

impl NextAvailId for Error

Source§

fn next_avail_id(&self) -> Option<&Duration>

optional return to get the duration to the next available id

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.