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
[]
= "chtypes"
= "0.1.2"
= "2024"
= "1.85"
= "Apache-2.0"
= "https://github.com/wave-rf/chtypes"
= "https://github.com/wave-rf/chtypes"
= "https://docs.rs/chtypes"
= ["clickhouse", "types", "schema", "validation", "ffi"]
= ["database", "api-bindings"]
= "ClickHouse's own type system, schema validation, DEFAULT/TTL semantics and coercion, per ClickHouse version, over the frozen chs_* C ABI"
[]
= "0.8"
= { = "1", = ["derive"] }
# serde_json reads `manifest.json` and writes the settings object that crosses the
# C boundary — both of which are this crate's own well-formed UTF-8.
#
# It deliberately does NOT read result documents. `raw_value` was the analog of
# Go's json.RawMessage here, but serde_json cannot parse a document at all when a
# String column's bytes are not valid UTF-8 — which is how this crate came to
# retry through `String::from_utf8_lossy` and destroy the bytes the C ABI contract
# calls authoritative. `crate::doc` reads those documents over `&[u8]`, and
# `crate::json` compares leaf text exactly; `arbitrary_precision` is not enabled
# for the same reason it never was (see those modules' docs).
= "1"
= "2"
# --- the `fetch` feature: chtypes::ensure and the `chtypes` binary (docs/guides/fetch.md).
# Every crate below is optional and behind `fetch`, so `--no-default-features`
# builds with exactly the dependency set above.
#
# ed25519-dalek verifies SHA256SUMS.sig (spec §4); verification only, so the
# precomputed tables and zeroize are off. sha2 is the digest the whole chain
# hashes with, pinned to the series dalek itself uses so there is one copy.
= { = "3", = true, = false }
= { = "0.11", = true, = false }
# ureq fetches over HTTPS (rustls + webpki roots, no OpenSSL). Its gzip feature
# is OFF on purpose: a transparently un-gzipped body would hash differently
# from the bytes SHA256SUMS records. base64 (for the signature file) is pinned
# to the series ureq uses so there is one copy.
= { = "3", = true, = false, = ["rustls"] }
= { = "0.23", = true }
# tar + flate2 unpack the artifact tarball; xattr support is not wanted.
= { = "0.4", = true, = false }
= { = "1", = true }
[]
= ["fetch"]
# `chtypes::ensure`, the registry's autofetch option and the `chtypes` binary.
= [
"dep:ed25519-dalek",
"dep:sha2",
"dep:ureq",
"dep:base64",
"dep:tar",
"dep:flate2",
]
[[]]
= "chtypes"
= "src/main.rs"
= ["fetch"]
# The fetch suite runs the binary and the fixtures; it does not exist without
# the feature.
[[]]
= "fetch"
= ["fetch"]
[]
# The integration tests read manifest.json themselves, to prove the loader took
# the library file name from it rather than constructing one.
= "1"
[[]]
= "demo"
= "examples/demo.rs"
# CI already runs `cargo clippy --all-targets -- -D warnings`, which enforces
# clippy's default lint set (the `correctness`/`suspicious`/`style`/
# `complexity`/`perf` groups); this table only ADDS to that, and every entry
# below is already clean on this tree.
#
# `clippy::pedantic` (317 hits) and `clippy::nursery` are not enabled: at
# that volume it stops being "stricter" and starts being a source-wide
# rewrite outside a lint-tooling change's scope. `clippy::cargo` is enabled
# except `multiple_crate_versions`, which fires once (two `syn` majors pulled
# in transitively by different dependencies) and can only be cleared by a
# dependency bump, not a lint config. `unwrap_used`/`expect_used`/`panic`/
# `print_stdout` were tried and dropped for the same reason (68-290 existing,
# legitimate hits in tests and the CLI binary); `dbg_macro`/`todo`/
# `unimplemented` were already zero-hit and are free debug-leftover guards.
[]
= { = "warn", = -1 }
= "allow"
= "warn"
= "warn"
= "warn"