# ██████╗ ███████╗██████╗ ███████╗
# ██╔══██╗██╔════╝██╔══██╗██╔════╝
# ██████╔╝█████╗  ██████╔╝███████╗
# ██╔══██╗██╔══╝  ██╔═══╝ ╚════██║
# ██║  ██║███████╗██║     ███████║
# ╚═╝  ╚═╝╚══════╝╚═╝     ╚══════╝
#╔═══════════════════════════════╗
#║ Rust Efficiency & Performance ║
#╚═══════════════════════════════╝
[package]
name    = "iqdb-filter"
version = "0.3.0"

# Minimum Supported Rust Version (MSRV)
rust-version = "1.87"
edition = "2024"

# License
license = "Apache-2.0 OR MIT"

# Readme
readme = "README.md"

# Description
description = "Canonical metadata-filter evaluator for vector search: validate-on-construction and infallible per-row evaluation - part of the iQDB family."

# Keywords (5 max)
keywords = [
    "filtering",
    "vector-search",
    "metadata",
    "hybrid-search",
    "iqdb"
]

# Categories
categories = [
    "algorithms",
    "data-structures"
]

# Links
homepage      = "https://github.com/jamesgober/iqdb-filter"
repository    = "https://github.com/jamesgober/iqdb-filter"
documentation = "https://docs.rs/iqdb-filter"

# Authors
authors = [
    "James Gober <me@jamesgober.com>",
    "Matt Callahan <matthewcallahan01@icloud.com>"
]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "iqdb_filter"
path = "src/lib.rs"


# FEATURE FLAGS
# #################################
[features]
# Default build: the canonical evaluator and the FilterStrategy vocabulary.
# No optional dependencies.
default = []


# DEPENDENCIES
# #################################
[dependencies]
# Shared public vocabulary: Filter, Metadata, Value, IqdbError, Result.
iqdb-types = "1.0.0"


# DEV DEPENDENCIES
# #################################
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
proptest = "1"

[target.'cfg(loom)'.dev-dependencies]
loom = "0.7"


# BENCHMARKS
# #################################
[[bench]]
name    = "filter_bench"
harness = false


# RELEASE PROFILE
# #################################
[profile.release]
opt-level     = 3
lto           = "fat"
codegen-units = 1
panic         = "abort"
strip         = "symbols"
