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
//! fraiseql-wire: Streaming JSON query engine for Postgres 17
//!
//! This crate provides a minimal, async Rust query engine that streams JSON
//! data from Postgres with low latency and bounded memory usage.
//!
//! # Supported Query Shape
//!
//! ```sql
//! SELECT data
//! FROM v_{entity}
//! WHERE predicate
//! [ORDER BY expression]
//! ```
// Wave 9 (Q4): all library decoders/encoders/validators are panic-free
// w.r.t. slice/vec indexing. Test files and examples opt out individually
// with `#![allow(clippy::indexing_slicing)]` + `// Reason:`.
// Pedantic allows — workspace sets `pedantic = deny`. These are grouped and
// justified per Q3 / F053 (see `IMPROVEMENTS.md`). Two categories:
//
// 1. Wire-protocol cast suppressions — binary decoders that are statically
// bounded by the protocol contract (counts, lengths, offsets fit in the
// target type by construction).
// 2. Crate-wide style preferences — binary-protocol code prizes locality and
// explicitness over the rust-idiomatic alternatives clippy prefers.
//
// Test-bleed lints (`unreadable_literal`, `explicit_iter_loop`) have been
// moved to per-module `#![allow]` inside `mod tests` so the suppression
// scope matches the locus of the fires.
//
// === Wire-protocol cast suppressions (binary decoders, statically bounded) ===
// Reason: intentional f64 conversions for metrics counters
// Reason: intentional usize/u64 casts for buffer sizes
// Reason: duration/size values are always positive
// Reason: byte counts within positive range
// Reason: incremental query string building
// Reason: explicit continues in wire protocol loops
// Reason: drain pattern for ownership transfer in buffers
// Reason: placeholder bindings for protocol fields
// === Crate-wide style preferences (binary-protocol locality and explicitness) ===
// Reason: helper structs near point of use for clarity
// Reason: explicit arms document each protocol variant
// Reason: match with early return is clearer here
// Reason: API consistency with async trait bounds
// Reason: HashMap type params explicit at call sites
// Reason: quoted protocol names in docs are intentional
// Reason: parameter names in docstrings without backticks
compile_error!;
// Re-export commonly used types
pub use FraiseClient;
pub use ;
pub use ;
/// Library version
pub const VERSION: &str = env!;