halfedge 0.2.0

A half-edge mesh data structure library for Rust: traversal, topology operations, geometry, subdivision, decimation, parameterization, geodesics, deformation, boolean operations, and more.
Documentation
[package]
name = "halfedge"
version = "0.2.0"
edition = "2024"
rust-version = "1.87"
authors = ["nil-is-lin <nil.is.lin@gmail.com>"]
description = "A half-edge mesh data structure library for Rust: traversal, topology operations, geometry, subdivision, decimation, parameterization, geodesics, deformation, boolean operations, and more."
license = "MIT OR Apache-2.0"
repository = "https://github.com/nil-is-lin/halfedge"
homepage = "https://github.com/nil-is-lin/halfedge"
documentation = "https://docs.rs/halfedge"
readme = "README.md"
keywords = ["half-edge", "mesh", "geometry", "3d", "graphics"]
categories = ["data-structures", "graphics", "mathematics"]
exclude = [
    "/docs",
    "/book",
    "/target",
    "/.github",
    "/.workbuddy",
    "/.codeartsdoer",
    "/.arts",
    "halfedge_comparison.md",
    "project_shortcomings_analysis.md",
    "shortcomings_progress_review.md",
    "overview.md",
]

[dependencies]
slotmap = "1.0"
sprs = "0.11"
rayon = "1"
robust = "1.2"
log = "0.4"
serde = { version = "1", features = ["derive"], optional = true }
# Optional: exact arithmetic kernel (Rational64) for construction operations
num-rational = { version = "0.4", optional = true }
# Optional: interactive 3D viewer example (enables `engvis_viewer`)
engvis-core = { version = "0.1", optional = true }
engvis-renderer = { version = "0.1", optional = true }
egui = { version = "0.33", optional = true }
winit = { version = "0.30", optional = true }
# Matches engvis-core's glam so the dependency is unified (single version in tree).
glam = { version = "0.30", optional = true }

[features]
default = []
serde = ["dep:serde", "slotmap/serde"]
viewer = ["dep:engvis-core", "dep:engvis-renderer", "dep:egui", "dep:winit", "dep:glam"]
# Experimental: exact arithmetic via Rational64. See Roadmap (P1). Not yet wired
# into the geometry kernel — currently exposes `ExactScalar` for early adopters.
exact = ["dep:num-rational"]

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

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

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

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

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

[[example]]
name = "engvis_viewer"
required-features = ["viewer"]