An open API service indexing awesome lists of open source software.

https://github.com/kazk/xid-rs

Globally unique sortable id generator. A Rust port of https://github.com/rs/xid.
https://github.com/kazk/xid-rs

id rust

Last synced: 2 months ago
JSON representation

Globally unique sortable id generator. A Rust port of https://github.com/rs/xid.

Awesome Lists containing this project

README

          

# xid

[![CI](https://github.com/kazk/xid-rs/workflows/CI/badge.svg)](https://github.com/kazk/xid-rs/actions?query=workflow%3ACI)
[![Crates.io](https://img.shields.io/crates/v/xid.svg)](https://crates.io/crates/xid)
[![API reference](https://docs.rs/xid/badge.svg)](https://docs.rs/xid/)

Globally unique sortable id generator. A Rust port of https://github.com/rs/xid.

The binary representation is compatible with the Mongo DB 12-byte [ObjectId][object-id].
The value consists of:

- a 4-byte timestamp value in seconds since the Unix epoch
- a 3-byte value based on the machine identifier
- a 2-byte value based on the process id
- a 3-byte incrementing counter, initialized to a random value

The string representation is 20 bytes, using a base32 hex variant with characters `[0-9a-v]`
to retain the sortable property of the id.

See the original [`xid`] project for more details.

## Usage

```rust
println!("{}", xid::new()); //=> bva9lbqn1bt68k8mj62g
```

## Examples

- [`cargo run --example gen`](./examples/gen.rs): Generate xid

[`xid`]: https://github.com/rs/xid
[object-id]: https://docs.mongodb.org/manual/reference/object-id/