1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//! Zero-config primitives that replace a dozen crates.
//!
//! Every module is a single-import, single-call primitive (hex, base64,
//! timestamps, UUIDs, hashing, glob matching, regex, JSON, async), backed by
//! a vetted dependency stack that bottoms out at two leaves.
//!
//! Each optional feature unlocks one capability with one audited stack. The
//! default build carries `core` **and `trace`**: this workspace forbids
//! `println!` in library code and names `tracing` as the replacement, so a
//! build without `trace` would leave that rule with nothing to point at.
//! `--no-default-features --features core` restores a genuinely
//! zero-dependency build. (Kept on one line on purpose: rustdoc joins these
//! lines but not a word broken across them, so a wrapped flag renders as a
//! flag nobody can paste.)
//!
//! ## Feature map
//!
//! - `core` (default) — encoding, fs, glob, hex, leb128, retry, similarity,
//! task, time. Zero deps.
//! - `trace` (default) — trace. Adds `tracing` plus the default subscriber
//! bootstrap (`std` only; no `attributes`, so no `syn`).
//! - `random` — random, id. Adds `getrandom`.
//! - `hash` — hash. Adds `blake3`.
//! - `pattern` — pattern. Adds `regex`.
//! - `json` — json. Adds `serde`, `serde_json`.
//! - `ron` — ron. Adds `serde`, `ron`.
//! - `wire` — wire. Adds `rkyv`.
//! - `http` — http. Adds `ureq` (rustls-only TLS), `iri-string`.
//! - `online` — online. Zero deps.
//! - `fs-raw` — `fs::available_space`, and `fs::capability::Dir`: handle-relative
//! access (`openat`/`statat`/`unlinkat`/`mkdirat`/`readlinkat`) for trees that
//! are being rewritten while you walk them. Adds `rustix` (Unix-only).
//! - `process` — the two supervised-subprocess primitives:
//! `process::kill_process_group` (signal a whole group) and
//! `process::child_has_exited_without_reaping` (observe an exit *without*
//! releasing the pid, which is what stops the OS reissuing a group id under a
//! supervisor that still owes signals to it). Adds `rustix/process`
//! (Unix-only).
//! - `full` — all of the above.
//!
//! Lint contract: workspace `missing_docs` deny, `unsafe_code` forbid,
//! `broken_intra_doc_links` deny; see the workspace root `Cargo.toml`.
///
/// Single-import encoding primitives: base64 and percent-encoding.
/// Shell-style glob matching.
/// BLAKE3 content-addressable hashing (feature `hash`).
/// Hex encode and decode.
/// Blocking HTTP exchange with strict URL validation (feature `http`).
/// UUID generation and parsing (feature `random`).
/// JSON encoding and decoding via serde (feature `json`).
/// LEB128 variable-length integer encoding.
/// TCP reachability probing, zero-dep (feature `online`).
/// Compiled regex matching with a linear-time guarantee (feature `pattern`).
/// Supervised subprocess termination (feature `process`, Unix-only).
/// OS entropy (feature `random`).
/// Retry budgets: attempts, backoff, deadlines. Zero-dep policy values.
/// RON encoding and decoding via serde (feature `ron`).
/// Pure, replaceable similarity metrics and weighted composition.
/// Single-threaded executor: `block_on`, `join_all`, `spawn_blocking`.
/// RFC 3339 timestamps and calendar math.
/// Structured, levelled logging and default debugger bootstrap (feature
/// `trace`, default-on).
/// Zero-copy binary wire serialization via rkyv (feature `wire`).