[package]
edition = "2021"
rust-version = "1.89.0"
name = "kiddo"
version = "6.0.0"
authors = ["Scott Donnelly <scott@donnel.ly>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance, flexible, ergonomic k-d tree library. Ideal for geo- and astro- nearest-neighbour and k-nearest-neighbor queries"
documentation = "https://docs.rs/kiddo"
readme = "README.md"
keywords = [
"kd-tree",
"kdtree",
"kd",
"nearest-neighbor",
"knn",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/sdd/kiddo"
resolver = "2"
[package.metadata.cargo-machete]
ignored = ["log"]
[package.metadata.docs.rs]
features = [
"buffered_result_collection",
"csv",
"f16",
"fixed",
"huge_pages",
"las",
"leaf_nta_prefetch",
"logging_off",
"multi-threaded",
"rkyv_08",
"serde",
"simd",
"small_n_result_collectors",
]
[features]
buffered_result_collection = ["dep:smallvec"]
cargo_asm = [
"dep:rand",
"dep:rand_chacha",
]
cpp_competitors = ["dep:cc"]
csv = ["dep:csv"]
default = [
"fixed",
"multi-threaded",
]
exact_query_stats = []
f16 = ["dep:half"]
fixed = ["dep:fixed"]
fuzz = ["test_utils"]
huge_pages = ["dep:libc"]
las = ["dep:las"]
leaf_nta_prefetch = []
leaf_view_chunked = []
logging_off = [
"dep:log",
"tracing/max_level_off",
"tracing/release_max_level_off",
"log/max_level_off",
"log/release_max_level_off",
]
modified_van_emde_boas = []
multi-threaded = ["dep:rayon"]
no_inline = []
result_collection_stats = []
rkyv_08 = [
"dep:rkyv_08",
"dep:ptr_meta",
"dep:bytecheck",
]
serde = [
"dep:serde",
"serde/derive",
"fixed/serde",
"aligned-vec/serde",
]
simd = []
simulator = []
small_n_result_collectors = ["dep:smallvec"]
test_utils = [
"dep:rand",
"dep:rand_chacha",
"dep:fixed",
]
unreliable_select_nth_unstable = []
[lib]
name = "kiddo"
path = "src/lib.rs"
[[example]]
name = "batch_overhead_probe"
path = "examples/batch_overhead_probe.rs"
required-features = [
"test_utils",
"multi-threaded",
]
[[example]]
name = "fuzz-case-repro"
path = "examples/fuzz-case-repro.rs"
required-features = ["fuzz"]
[[example]]
name = "repro_donnelly_block3_exact_divergence"
path = "examples/repro_donnelly_block3_exact_divergence.rs"
required-features = [
"simd",
"test_utils",
]
[[example]]
name = "build_v6_profile_archives"
path = "examples/build_v6_profile_archives.rs"
required-features = [
"rkyv_08",
"simd",
"test_utils",
]
[[example]]
name = "build_v6_hugepage_archives"
path = "examples/build_v6_hugepage_archives.rs"
required-features = [
"rkyv_08",
"test_utils",
]
[[example]]
name = "build_v6_query_focus_archives"
path = "examples/build_v6_query_focus_archives.rs"
required-features = [
"rkyv_08",
"test_utils",
]
[[example]]
name = "serde"
path = "examples/serde.rs"
required-features = [
"csv",
"serde",
]
[[example]]
name = "build-float-doctest-tree-rkyv_08"
path = "examples/build-float-doctest-tree-rkyv_08.rs"
required-features = ["rkyv_08"]
[[example]]
name = "build-immutable-doctest-tree-rkyv_08"
path = "examples/build-immutable-doctest-tree-rkyv_08.rs"
required-features = ["rkyv_08"]
[[example]]
name = "float-rkyv_08-serialize"
path = "examples/float-rkyv_08-serialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "float-rkyv_08-deserialize"
path = "examples/float-rkyv_08-deserialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-rkyv_08-serialize"
path = "examples/immutable-rkyv_08-serialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-rkyv_08-deserialize"
path = "examples/immutable-rkyv_08-deserialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "embedded-rkyv_08-deserialize"
path = "examples/embedded-rkyv_08-deserialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "download-geonames-data"
path = "examples/download-geonames-data.rs"
required-features = ["csv"]
[[example]]
name = "build-geonames-embedded-rkyv"
path = "examples/build-geonames-embedded-rkyv.rs"
required-features = [
"csv",
"rkyv_08",
]
[[example]]
name = "immutable-large-eytz-build-and-serialize-f32"
path = "examples/immutable-large-eytz-build-and-serialize-f32.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-build-and-serialize-d4-f32"
path = "examples/immutable-large-donnelly-build-and-serialize-d4-f32.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-ann-eytz-build-and-serialize"
path = "examples/immutable-large-ann-eytz-build-and-serialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-ann-donnelly-build-and-serialize"
path = "examples/immutable-large-ann-donnelly-build-and-serialize.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-eytz-deserialize-and-traverse-f32"
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-eytz-deserialize-and-traverse-f32-pf"
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32-pf.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-eytz-deserialize-and-traverse-f32-pf-far"
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32-pf-far.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-eytz-simulate-traverse-f32"
path = "examples/immutable-large-eytz-simulate-traverse-f32.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-eytz-simulate-traverse-f64"
path = "examples/immutable-large-eytz-simulate-traverse-f64.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-ann-eytzinger-deserialize-and-query"
path = "examples/immutable-large-ann-eytzinger-deserialize-and-query.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-deserialize-and-traverse-f32-rolled"
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-rolled.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-deserialize-and-traverse-f32-unrolled"
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-unrolled.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-deserialize-and-traverse-f32-unrolled-pf"
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-unrolled-pf.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-simulate-traverse-f32"
path = "examples/immutable-large-donnelly-simulate-traverse-f32.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-simulate-traverse-f32-unrolled"
path = "examples/immutable-large-donnelly-simulate-traverse-f32-unrolled.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-simulate-traverse-f64"
path = "examples/immutable-large-donnelly-simulate-traverse-f64.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-donnelly-swpre-simulate-traverse-f64"
path = "examples/immutable-large-donnelly-swpre-simulate-traverse-f64.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-ann-donnelly-deserialize-and-query"
path = "examples/immutable-large-ann-donnelly-deserialize-and-query.rs"
required-features = ["rkyv_08"]
[[example]]
name = "immutable-large-ann-donnelly-swpre-deserialize-and-query"
path = "examples/immutable-large-ann-donnelly-swpre-deserialize-and-query.rs"
required-features = ["rkyv_08"]
[[test]]
name = "donnelly_simd_regressions"
path = "tests/donnelly_simd_regressions.rs"
[[test]]
name = "kd_tree_fuzz_v6"
path = "tests/kd_tree_fuzz_v6.rs"
required-features = ["fuzz"]
[[test]]
name = "string_data_test"
path = "tests/string_data_test.rs"
[[test]]
name = "builder_ui"
path = "tests/builder_ui.rs"
[[test]]
name = "custom_metric_block_fallback"
path = "tests/custom_metric_block_fallback.rs"
[[test]]
name = "custom_query_metric"
path = "tests/custom_query_metric.rs"
[[test]]
name = "custom_leaf_strategy"
path = "tests/custom_leaf_strategy.rs"
[[bench]]
name = "profile_cpp_competitors"
path = "benches/profile_cpp_competitors.rs"
harness = false
required-features = [
"cpp_competitors",
"test_utils",
]
[[bench]]
name = "profile_external_kd_trees"
path = "benches/profile_external_kd_trees.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_neighbourhood_published"
path = "benches/profile_neighbourhood_published.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_approx_nearest_one_eytzinger"
path = "benches/profile_v6_approx_nearest_one_eytzinger.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_archived_huge_pages"
path = "benches/profile_v6_archived_huge_pages.rs"
harness = false
required-features = [
"rkyv_08",
"huge_pages",
]
[[bench]]
name = "profile_v6_archived_query_focus"
path = "benches/profile_v6_archived_query_focus.rs"
harness = false
required-features = [
"rkyv_08",
"huge_pages",
]
[[bench]]
name = "profile_v6_construction"
path = "benches/profile_v6_construction.rs"
harness = false
required-features = [
"simd",
"test_utils",
]
[[bench]]
name = "profile_v6_cyclic_query_pool"
path = "benches/profile_v6_cyclic_query_pool.rs"
harness = false
required-features = [
"simd",
"test_utils",
]
[[bench]]
name = "profile_v6_dist_metrics"
path = "benches/profile_v6_dist_metrics.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_leaf_strategies"
path = "benches/profile_v6_leaf_strategies.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_leaf_strategies_criterion"
path = "benches/profile_v6_leaf_strategies_criterion.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_nearest_n_eytzinger"
path = "benches/profile_v6_nearest_n_eytzinger.rs"
harness = false
[[bench]]
name = "profile_v6_nearest_one_eytzinger"
path = "benches/profile_v6_nearest_one_eytzinger.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_query_family_eytzinger"
path = "benches/profile_v6_query_family_eytzinger.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_query_pool"
path = "benches/profile_v6_query_pool.rs"
harness = false
required-features = [
"simd",
"test_utils",
]
[[bench]]
name = "profile_v6_query_pool_perf"
path = "benches/profile_v6_query_pool_perf.rs"
harness = false
required-features = [
"simd",
"test_utils",
]
[[bench]]
name = "profile_v6_result_capacity"
path = "benches/profile_v6_result_capacity.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_result_collection_stats"
path = "benches/profile_v6_result_collection_stats.rs"
harness = false
required-features = [
"rkyv_08",
"simd",
"test_utils",
"result_collection_stats",
]
[[bench]]
name = "profile_v6_result_collection_thresholds"
path = "benches/profile_v6_result_collection_thresholds.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "profile_v6_stem_exact_stats"
path = "benches/profile_v6_stem_exact_stats.rs"
harness = false
required-features = [
"simd",
"test_utils",
"exact_query_stats",
]
[[bench]]
name = "profile_v6_stem_strategies"
path = "benches/profile_v6_stem_strategies.rs"
harness = false
required-features = [
"simd",
"test_utils",
]
[[bench]]
name = "profile_v6_within_radius_projection"
path = "benches/profile_v6_within_radius_projection.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "v6_codspeed_queries"
path = "benches/v6_codspeed_queries.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "v6_periodic_queries"
path = "benches/v6_periodic_queries.rs"
harness = false
required-features = ["test_utils"]
[[bench]]
name = "v6_scratch_strategies"
path = "benches/v6_scratch_strategies.rs"
harness = false
required-features = ["test_utils"]
[dependencies.aligned-vec]
version = "0.6.1"
[dependencies.array-init]
version = "2.1.0"
[dependencies.az]
version = "1"
[dependencies.bytecheck]
version = "0.8"
optional = true
[dependencies.cmov]
version = "0.5"
[dependencies.csv]
version = "1"
optional = true
[dependencies.fixed]
version = "1,<1.31.0"
features = ["num-traits"]
optional = true
[dependencies.half]
version = "2.5.0"
features = ["num-traits"]
optional = true
[dependencies.las]
version = "0.10"
features = ["laz-parallel"]
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.log]
version = "0.4"
optional = true
[dependencies.nonmax]
version = "0.5.5"
[dependencies.num-traits]
version = "0.2"
[dependencies.ptr_meta]
version = "0.3"
optional = true
[dependencies.rand]
version = "0.10"
optional = true
[dependencies.rand_chacha]
version = "0.10"
optional = true
[dependencies.rayon]
version = "1"
optional = true
[dependencies.rkyv_08]
version = "0.8.9"
optional = true
package = "rkyv"
[dependencies.serde]
version = "1"
optional = true
[dependencies.smallvec]
version = "1"
optional = true
[dependencies.sorted-vec]
version = "0.8"
[dependencies.test-log]
version = "0.2.19"
features = ["trace"]
[dependencies.tracing]
version = "0.1"
[dev-dependencies.assert_float_eq]
version = "1.2"
[dev-dependencies.codspeed-criterion-compat]
version = "5.0"
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.elapsed]
version = "0.1.2"
[dev-dependencies.flate2]
version = "1"
features = ["zlib-ng-compat"]
default-features = false
[dev-dependencies.fnntw]
version = "0.4.1"
features = ["no-position"]
default-features = false
[dev-dependencies.itertools]
version = "0.15"
[dev-dependencies.kd-tree]
version = "0.6.2"
[dev-dependencies.las]
version = "0.10"
features = ["laz-parallel"]
[dev-dependencies.memmap]
version = "0.7"
[dev-dependencies.nabo]
version = "0.6.0"
default-features = false
[dev-dependencies.neighbourhood]
version = "0.2.0"
[dev-dependencies.postcard]
version = "1"
features = ["alloc"]
[dev-dependencies.proc-macro2]
version = "1"
features = [
"default",
"proc-macro",
]
[dev-dependencies.radians]
version = "0.3"
[dev-dependencies.rand]
version = "0.10"
[dev-dependencies.rand_09]
version = "0.9"
features = ["small_rng"]
package = "rand"
[dev-dependencies.rand_distr]
version = "0.6"
[dev-dependencies.reqwest]
version = "0.13"
features = [
"blocking",
"rustls",
]
default-features = false
[dev-dependencies.rstest]
version = "0.26"
[dev-dependencies.serde]
version = "1"
features = [
"derive",
"rc",
]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
[dev-dependencies.trybuild]
version = "1"
[dev-dependencies.ubyte]
version = "0.10"
[dev-dependencies.zip]
version = "8"
features = ["deflate"]
default-features = false
[dev-dependencies.zzz]
version = "0.3.2"
[build-dependencies.cc]
version = "1"
features = ["parallel"]
optional = true
[build-dependencies.yep-cache-line-size]
version = "0.9"
[target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies.generator]
version = "0.8.4"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(coverage_nightly)"]
[profile.bench]
opt-level = 3
lto = true
codegen-units = 1
debug = 2
[profile.fast-tests]
lto = "thin"
codegen-units = 16
debug = 1
incremental = true
inherits = "release"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
debug = 2