scru64 0.2.0

SCRU64: Sortable, Clock-based, Realm-specifically Unique identifier
Documentation
# SCRU64: Sortable, Clock-based, Realm-specifically Unique identifier

[![Crates.io](https://img.shields.io/crates/v/scru64)](https://crates.io/crates/scru64)
[![License](https://img.shields.io/crates/l/scru64)](https://github.com/scru64/rust/blob/main/LICENSE)

SCRU64 ID offers compact, time-ordered unique identifiers generated by
distributed nodes. SCRU64 has the following features:

- ~62-bit non-negative integer storable as signed/unsigned 64-bit integer
- Sortable by generation time (as integer and as text)
- 12-digit case-insensitive textual representation (Base36)
- ~38-bit Unix epoch-based timestamp that ensures useful life until year 4261
- Variable-length node/machine ID and counter fields that share 24 bits

```rust
// pass node ID through environment variable
std::env::set_var("SCRU64_NODE_SPEC", "42/8");

// generate a new identifier object
let x = scru64::new();
println!("{x}"); // e.g. "0u2r85hm2pt3"
println!("{}", x.to_u64()); // as a 64-bit unsigned integer

// generate a textual representation directly
println!("{}", scru64::new_string()); // e.g. "0u2r85hm2pt4"
```

See [SCRU64 Specification] for details.

SCRU64's uniqueness is realm-specific, i.e., dependent on the centralized
assignment of node ID to each generator. If you need decentralized, globally
unique time-ordered identifiers, consider [SCRU128].

[SCRU64 Specification]: https://github.com/scru64/spec
[SCRU128]: https://github.com/scru128/spec

## Crate features

Default features:

- `std` enables the primary `new()` and `new_string()` functions and configures
  `generator::Scru64Generator` with the system clock. Without `std`, this crate
  provides limited functionality available under `no_std` environments.

Optional features:

- `serde` enables serialization/deserialization via serde.
- `tokio` enables the `async_tokio::new()` and `async_tokio::new_string()`
  functions, the non-blocking counterpart of `new()` and `new_string()`.

## License

Licensed under the Apache License, Version 2.0.

## See also

- [docs.rs/scru64]https://docs.rs/scru64