Struct snowflake::ProcessUniqueId [] [src]

pub struct ProcessUniqueId { /* fields omitted */ }

Process unique IDs are guaranteed to be unique within the current process, for the lifetime of the current process.

  1. ID creation should be highly performant even on highly concurrent systems. It's MUCH faster than using random/time based IDs (but, on the other hand, only unique within a process).
  2. While this crate can run out of process unique IDs, this is very unlikely assuming a sane threading model and will panic rather than potentially reusing unique IDs.

Limits

The unique ID's are sizeof(usize) + 64 bits wide and are generated by combining a usize global counter value with a 64bit thread local offset. This is important because each thread that calls new() at least once will reserve at least 264 IDs. So, the only way to run out of IDs in a reasonable amount of time is to run a 32bit system, spawn 232 threads, and claim one ID on each thread. You might be able to do this on a 64bit system but it would take a while... TL; DR: Don't create unique IDs from over 4 billion different threads on a 32bit system.

Methods

impl ProcessUniqueId
[src]

Create a new unique ID.

panics if there are no more unique IDs available. If this happens, go home and reevaluate your threading model!

Trait Implementations

impl Copy for ProcessUniqueId
[src]

impl Clone for ProcessUniqueId
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl PartialEq for ProcessUniqueId
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for ProcessUniqueId
[src]

impl PartialOrd for ProcessUniqueId
[src]

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Ord for ProcessUniqueId
[src]

This method returns an Ordering between self and other. Read more

impl Hash for ProcessUniqueId
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl Debug for ProcessUniqueId
[src]

Formats the value using the given formatter.

impl Display for ProcessUniqueId
[src]

Formats the value using the given formatter. Read more

impl Default for ProcessUniqueId
[src]

Returns the "default value" for a type. Read more