apache-datasketches 0.2.2

Safe, idiomatic Rust bindings for Apache DataSketches
Documentation
[package]
name = "apache-datasketches"
version = "0.2.2"
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Safe, idiomatic Rust bindings for Apache DataSketches"
readme = "README.md"
keywords = ["datasketches", "hyperloglog", "sketch", "cardinality"]
categories = ["data-structures", "algorithms"]

[features]
# Every sketch family is on by default: an empty default set produced a crate
# that compiled cleanly and exposed nothing, with no diagnostic. The cost is
# C++ compile time (~15s cold, debug, once) -- unused families cost nothing at
# runtime, since the linker drops what you do not call. Opt out with
# `default-features = false` plus the families you want. Note that Cargo
# unifies features across a dependency graph, so opting out only holds if no
# other crate in the graph pulls this one with default features.
default = ["hll", "theta", "cpc", "tuple"]
hll = ["apache-datasketches-sys/hll"]
theta = ["apache-datasketches-sys/theta"]
cpc = ["apache-datasketches-sys/cpc"]
tuple = ["apache-datasketches-sys/tuple"]

[package.metadata.docs.rs]
# Explicit rather than implicit: docs.rs should keep building every family
# even if the default set changes again.
features = ["hll", "theta", "cpc", "tuple"]

[dependencies]
apache-datasketches-sys = { version = "0.2.1", path = "../apache-datasketches-sys", default-features = false }
cxx = "1"
thiserror = "1"

[[example]]
name = "hll"
required-features = ["hll"]

[[example]]
name = "theta"
required-features = ["theta"]

[[example]]
name = "cpc"
required-features = ["cpc"]

[[example]]
name = "tuple"
required-features = ["tuple"]

[[example]]
name = "tuple_generic"
required-features = ["tuple"]

# Perf harness for the ArrayOfDoubles update path, deliberately an example
# rather than a `[[bench]]`: with `harness = false` a bench target is *run* by
# `cargo test`, which would put a multi-million-item loop in CI. As an example
# it is still built and clippy-checked by `--all-targets`, but only ever run
# on request.
[[example]]
name = "bench_tuple_update"
required-features = ["tuple"]

[[example]]
name = "bench_tuple_generic_update"
required-features = ["tuple"]

[[test]]
name = "concurrency_test"
required-features = ["hll"]

[[test]]
name = "hll_sketch_smoke_test"
required-features = ["hll"]

[[test]]
name = "hll_sketch_test"
required-features = ["hll"]

[[test]]
name = "hll_union_smoke_test"
required-features = ["hll"]

[[test]]
name = "hll_union_test"
required-features = ["hll"]

[[test]]
name = "theta_sketch_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_compact_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_wrapped_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_input_test"
required-features = ["theta"]

[[test]]
name = "theta_union_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_intersection_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_a_not_b_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_jaccard_smoke_test"
required-features = ["theta"]

[[test]]
name = "theta_jaccard_similarity_test"
required-features = ["theta"]

[[test]]
name = "theta_input_dispatch_test"
required-features = ["theta"]

[[test]]
name = "theta_setop_test"
required-features = ["theta"]

[[test]]
name = "theta_sketch_test"
required-features = ["theta"]

[[test]]
name = "theta_union_test"
required-features = ["theta"]

[[test]]
name = "theta_intersection_test"
required-features = ["theta"]

[[test]]
name = "theta_a_not_b_test"
required-features = ["theta"]

[[test]]
name = "theta_compressed_round_trip_test"
required-features = ["theta"]

[[test]]
name = "cpc_sketch_smoke_test"
required-features = ["cpc"]

[[test]]
name = "cpc_union_smoke_test"
required-features = ["cpc"]

[[test]]
name = "cpc_sketch_test"
required-features = ["cpc"]

[[test]]
name = "cpc_union_test"
required-features = ["cpc"]

[[test]]
name = "cpc_concurrency_test"
required-features = ["cpc"]

[[test]]
name = "tuple_sketch_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_compact_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_union_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_intersection_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_union_test"
required-features = ["tuple"]

[[test]]
name = "tuple_intersection_test"
required-features = ["tuple"]

[[test]]
name = "tuple_a_not_b_test"
required-features = ["tuple"]

[[test]]
name = "tuple_jaccard_similarity_test"
required-features = ["tuple"]

[[test]]
name = "tuple_a_not_b_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_jaccard_smoke_test"
required-features = ["tuple"]

[[test]]
name = "array_of_doubles_sketch_test"
required-features = ["tuple"]

[[test]]
name = "tuple_validation_test"
required-features = ["tuple"]

[[test]]
name = "tuple_concurrency_test"
required-features = ["tuple"]

[[test]]
name = "tuple_builder_test"
required-features = ["tuple"]

[[test]]
name = "cross_family_all_features_test"
required-features = ["theta", "tuple"]

[[test]]
name = "tuple_generic_sketch_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_compact_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_union_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_intersection_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_a_not_b_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_jaccard_smoke_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_conformance_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_ownership_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_summary_kinds_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_panic_test"
required-features = ["tuple"]

[[test]]
name = "tuple_generic_concurrency_test"
required-features = ["tuple"]