# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
name = "apex-solver"
version = "0.1.6"
authors = ["Amin Abouee <amin.abouee@gmail.com>"]
build = false
exclude = [
    "data_bk/*",
    "doc/*.md",
    "!doc/CHANGELOG.md",
    "profiles/*",
    "output/*",
    ".github/*",
    ".claude/*",
    ".rust_rules.mdc",
    "CLAUDE.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance Rust library for nonlinear least squares optimization with Lie group support, designed for SLAM, bundle adjustment, and pose graph optimization"
homepage = "https://github.com/amin-abouee/apex-solver"
documentation = "https://docs.rs/apex-solver"
readme = "README.md"
keywords = [
    "optimization",
    "slam",
    "computer-vision",
    "robotics",
    "nonlinear",
]
categories = [
    "algorithms",
    "science",
    "mathematics",
]
license = "Apache-2.0"
repository = "https://github.com/amin-abouee/apex-solver"

[features]
default = []
visualization = ["dep:rerun"]

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

[[bin]]
name = "optimize_2d_graph"
path = "bin/optimize_2d_graph.rs"

[[bin]]
name = "optimize_3d_graph"
path = "bin/optimize_3d_graph.rs"

[[example]]
name = "compare_optimizers"
path = "examples/compare_optimizers.rs"

[[example]]
name = "covariance_estimation"
path = "examples/covariance_estimation.rs"

[[example]]
name = "load_graph_file"
path = "examples/load_graph_file.rs"

[[example]]
name = "loss_function_comparison"
path = "examples/loss_function_comparison.rs"

[[example]]
name = "profile_datasets"
path = "examples/profile_datasets.rs"

[[example]]
name = "profile_linalg"
path = "examples/profile_linalg.rs"

[[example]]
name = "visualize_graph_file"
path = "examples/visualize_graph_file.rs"
required-features = ["visualization"]

[[example]]
name = "visualize_optimization"
path = "examples/visualize_optimization.rs"
required-features = ["visualization"]

[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"

[[bench]]
name = "solver_comparison"
path = "benches/solver_comparison.rs"
harness = false

[dependencies.chrono]
version = "0.4"

[dependencies.clap]
version = "4.5"
features = ["derive"]

[dependencies.colored]
version = "2.1"

[dependencies.faer]
version = "0.22"
features = ["sparse"]

[dependencies.memmap2]
version = "0.9"

[dependencies.nalgebra]
version = "0.33"
features = ["convert-glam029"]

[dependencies.num_cpus]
version = "1.16"

[dependencies.rand]
version = "0.9.2"

[dependencies.rayon]
version = "1.11"

[dependencies.rerun]
version = "0.26.2"
features = ["sdk"]
optional = true

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde_json]
version = "1.0"

[dependencies.thiserror]
version = "2.0.17"

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-subscriber]
version = "0.3"
features = [
    "env-filter",
    "fmt",
]

[dev-dependencies.criterion]
version = "0.6.0"

[dev-dependencies.csv]
version = "1.4"

[dev-dependencies.factrs]
version = "0.2.0"

[dev-dependencies.serde]
version = "1.0"
features = ["derive"]

[dev-dependencies.tempfile]
version = "3.23"

[dev-dependencies.tiny-solver]
version = "0.17"

[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
    "env-filter",
    "fmt",
]

[lints.clippy]
expect_used = "deny"
unwrap_used = "deny"

[profile.dev]
debug = 1
split-debuginfo = "unpacked"

[profile.profiling]
debug = 2
inherits = "release"

[profile.test]
debug = 1
split-debuginfo = "unpacked"
