[package]
edition = "2024"
rust-version = "1.85.1"
name = "ferroid"
version = "1.0.2"
authors = ["Nick Angelou <angelou.nick@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance ULID and Snowflake-style IDs. Unique, monotonic, and lexicographically sortable IDs optimized for low-latency services and async workloads."
documentation = "https://docs.rs/ferroid"
readme = "README.md"
keywords = [
"no_std",
"id",
"snowflake",
"ulid",
"monotonic",
]
categories = [
"data-structures",
"encoding",
"asynchronous",
"no-std",
"development-tools",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/s0l0ist/ferroid/blob/main/crates/ferroid"
[package.metadata.docs.rs]
features = ["all"]
no-default-features = true
[features]
all = [
"std",
"alloc",
"snowflake",
"ulid",
"thread-local",
"basic",
"lock",
"atomic",
"base32",
"async-tokio",
"async-smol",
"serde",
]
alloc = []
async-smol = [
"std",
"alloc",
"futures",
"dep:smol",
]
async-tokio = [
"std",
"alloc",
"futures",
"dep:tokio",
]
atomic = []
base32 = []
basic = []
cache-padded = ["dep:crossbeam-utils"]
default = []
futures = ["dep:futures"]
lock = [
"std",
"alloc",
]
parking-lot = [
"std",
"alloc",
"dep:parking_lot",
]
serde = ["dep:serde"]
snowflake = []
std = ["dep:rand"]
thread-local = [
"std",
"alloc",
"ulid",
"basic",
]
tracing = ["dep:tracing"]
ulid = []
[lib]
name = "ferroid"
crate-type = ["rlib"]
path = "src/lib.rs"
[[bench]]
name = "bench"
path = "benches/bench.rs"
harness = false
[dependencies.crossbeam-utils]
version = "0.8"
optional = true
default-features = false
[dependencies.futures]
version = "0.3"
optional = true
default-features = false
[dependencies.parking_lot]
version = "0.12"
optional = true
default-features = false
[dependencies.portable-atomic]
version = "1.13"
default-features = false
[dependencies.rand]
version = "0.9"
features = ["thread_rng"]
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true
default-features = false
[dependencies.smol]
version = "2.0"
optional = true
default-features = false
[dependencies.tokio]
version = "1.49"
features = [
"rt",
"time",
]
optional = true
default-features = false
[dependencies.tracing]
version = "0.1"
features = ["attributes"]
optional = true
default-features = false
[dev-dependencies.criterion]
version = "0.7"
features = [
"async_tokio",
"async_smol",
]
default-features = false
[dev-dependencies.futures]
version = "0.3"
features = ["alloc"]
default-features = false
[dev-dependencies.serde_json]
version = "1.0"
default-features = false
[dev-dependencies.tokio]
version = "1.49"
features = [
"rt-multi-thread",
"macros",
"sync",
]
default-features = false
[target.wasm32-unknown-unknown.dependencies.web-time]
version = "1.1"
default-features = false