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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//! Executable form of the keyspace-v2 convention.
//!
//! The convention is specified in `rfcs/` (v1). This crate is
//! its enforcement layer: everything a producer or consumer needs to emit and
//! parse conforming keys without ever spelling a raw key string.
//!
//! Canonical grammar (base-relative — the deployment base is the session
//! *namespace*, RFC 03 §1.1, so no key built here contains it):
//!
//! ```text
//! v1/<origin>/<class>/<producer>/<subject...>
//! ```
//!
//! Layer map:
//! - [`key`] — [`Key`]/[`Selector`]/[`Chunk`]: validated key value types over
//! `zenoh_keyexpr::OwnedKeyExpr` (RFC 08 §1.2).
//! - [`alert`] — the alert-key derivation, byte-precise (RFC 11 §3.1 — the
//! reference profile's binding of RFC 04 §1.2's neutral requirement).
//! - [`grammar`] — chunk lexical rules, reserved tokens, structural key
//! assembly and parsing (RFC 03); [`ContentHash`], the validated digest
//! type that makes `@blob` Tier-2 content-addressing structural (RFC 07
//! §2.3, v1.7).
//! - [`origin`] — `h-<12hex>` host-origin minting (RFC 06 §1).
//! - [`profile`] — the application profile: app name + origin salt, the two
//! constants an adopting application declares (RFC 06 §1, RFC 11 §4).
//! - [`slug`] — canonical, injective slugging of foreign values (RFC 03 §2).
//! - [`qos`] — the five named QoS profiles (RFC 04 §3).
//! - [`context`] — [`V1Context`]: origin + producer; producers build all
//! framework keys through it. [`BlobProbePrefix`], the `*`-origin `@blob`
//! probe form — deliberately not a [`Key`], so a probe cannot be passed
//! where a fetch prefix is expected (RFC 07 §2.5/§3).
//! - [`mod@slice`] — [`RegistrySlice`], the `introspect` reply type + diff
//! (RFC 08 §6).
//!
//! The subject vocabulary itself is governed by the registry (RFC 08). It is
//! **application-owned**: each application checks its `registry/*.toml` into
//! its own repository and generates typed subject builders/parsers from them
//! with the `zenkey-build` crate in its build script. This crate ships no
//! registry.
//!
//! The RFC's design properties D1–D6 are pinned as executable guard tests in
//! `tests/guard.rs` — run by CI, as RFC 03 §4 requires.
//!
//! # Note on the deployment base
//!
//! There is deliberately no base constant in this crate. The base is the value
//! a deployment sets as its Zenoh session **`namespace`**, which prefixes it
//! onto every keyexpr the session emits, strips it on delivery, and *filters*
//! ingress from outside it — an isolation boundary, not a string convention
//! (RFC 09 §0). The only legitimate readers are session configuration,
//! router-side artifacts (storage selectors, ACL rules), and deliberately
//! un-namespaced debug tools (`zenctl`). Application code that reaches for a
//! base to *build a key* has made a mistake: the session adds the base.
// docs.rs builds on nightly with `--cfg docsrs` (see Cargo.toml), which is
// what lets each feature-gated item carry the feature that gates it. Inert
// everywhere else — a stable `cargo doc` never sets the cfg (#325).
//
// **This is inferred, not annotated.** `doc_auto_cfg` was removed in Rust
// 1.92 (rust-lang/rust#138907) by being folded into `doc_cfg`, so enabling
// the feature here labels *every* `#[cfg(feature = "…")]` item, nested
// modules included — verified against the nightly docs.rs uses by rendering
// `judge::doctor`, `bus::body`, `model::decode` and `tape::generate` and
// finding the badge on each. A hand-written
// `#[cfg_attr(docsrs, doc(cfg(…)))]` beside a `#[cfg(…)]` is therefore
// redundant, and a *wrong* one would render a lie; the ones still on the
// re-exports below predate the merge and are harmless.
pub use ;
pub use ;
pub use WireEncoding;
pub use ;
/// Not public API — the reachable path generated registry code names to wrap
/// its own builder output (issue #312). Nothing here is covered by semver.
pub use __private;
pub use ;
pub use ;
pub use ;
pub use QosProfile;
pub use ;
/// The crate README's first snippet, compiled (#324's aftermath).
///
/// It is the adoption example on the crates.io landing page, and it silently
/// stopped compiling when `AppProfile::new` took its two constants as
/// newtypes: nothing built it, so nothing said so. `#[cfg(doctest)]` means
/// the file is *tested* and never rendered — the crate docs stay as they
/// are, and the two illustrative blocks that reference an application's own
/// generated module are fenced `rust,ignore`, which is the honest label for
/// code that cannot be compiled here.
;