transforms 2.1.0

A transform library to track reference frames and provide transforms between them.
Documentation
[package]
name = "transforms"
description = "A transform library to track reference frames and provide transforms between them."
authors = ["Deniz Hofmeister"]
license = "MIT"
version = "2.1.0"
edition = "2024"
rust-version = "1.86"
repository = "https://github.com/deniz-hofmeister/transforms"
documentation = "https://docs.rs/transforms"
keywords = ["robotics", "transform", "3d", "coordinate"]
categories = ["science::robotics", "no-std", "simulation", "mathematics"]
readme = "README.md"
include = [
    "/src",
    "/Cargo.toml",
    "/README.md",
    "/CHANGELOG.md",
    "/MIGRATION.md",
    "/LICENSE",
]

[features]
default = ["std"]
# `serde?/std` unlocks serde's SystemTime impls whenever both features are
# on, so `Transform<SystemTime>` serializes for downstream std users.
std = ["serde?/std"]
serde = ["dep:serde"]

[dependencies]
thiserror = { version = "2.0.12", default-features = false }
approx = { version = "0.5.1", default-features = false }
hashbrown = "0.17.1"
libm = { version = "0.2.15", default-features = false }
serde = { version = "1.0.219", default-features = false, features = ["alloc", "derive"], optional = true }

[dev-dependencies]
env_logger = "0.11.8"
proptest = "1.7.0"
serde_json = "1.0.140"
postcard = { version = "1.1.3", default-features = false, features = ["alloc"] }
log = "0.4.27"
# Console output only: `plotters` (the HTML report charts) is deliberately
# off — nobody reads the reports — and `cargo_bench_support` must be named
# explicitly or `cargo bench` stops working.
criterion = { version = "0.8.0", default-features = false, features = [
    "cargo_bench_support",
    "rayon",
] }
tokio = { version = "1.46.1", features = ["rt-multi-thread", "macros", "sync", "time"] }

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

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

[[example]]
name = "std_minimal"
path = "examples/std_minimal.rs"
required-features = ["std"]

[[example]]
name = "std_full"
path = "examples/std_full.rs"
required-features = ["std"]

[[example]]
name = "std_advanced"
path = "examples/std_advanced.rs"
required-features = ["std"]

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

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

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

# Applies only when building this repository directly (benches inherit it);
# dependents compile this crate under their own profiles.
[profile.release]
codegen-units = 1
lto = true