polyops 0.1.0

Fast Martinez-Rueda polygon clipping: Boolean operations (intersection, union, difference, xor) on polygons and multipolygons over GeoJSON-shaped coordinates. Pure-Rust port of martinez-polygon-clipping.
[package]
name = "polyops"
description = "Fast Martinez-Rueda polygon clipping: Boolean operations (intersection, union, difference, xor) on polygons and multipolygons over GeoJSON-shaped coordinates. Pure-Rust port of martinez-polygon-clipping."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
readme = "../../README.md"
keywords = ["polygon", "clipping", "boolean", "geojson", "martinez"]
categories = ["algorithms", "graphics", "science::geo"]

# Build docs.rs with all features so optional-feature items (serde, geo-types)
# render, with "Available on feature X" badges (via doc_auto_cfg + the docsrs cfg).
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
# Optional: derive serde `Serialize`/`Deserialize` on the public types
# (`Geometry`, `Operation`). Off by default — the core stays serde-free.
serde = ["dep:serde"]
# Optional: `From`/`Into` conversions between `Geometry` and the `geo-types`
# crate, for interop with the Rust geo ecosystem. Off by default.
geo-types = ["dep:geo-types"]

[dependencies]
robust = { workspace = true }
serde = { workspace = true, optional = true }
geo-types = { version = "0.7", optional = true }

[dev-dependencies]
serde = { workspace = true }
serde_json = { workspace = true }
criterion = { version = "0.5", features = ["html_reports"] }

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

[[bench]]
name = "benchmarks"
harness = false