[package]
name = "lib3mf"
version = "0.1.6"
edition = "2024"
authors = ["lib3mf_rust contributors"]
description = "Pure Rust implementation for 3MF (3D Manufacturing Format) parsing and writing"
license = "MIT"
repository = "https://github.com/telecos/lib3mf_rust"
homepage = "https://github.com/telecos/lib3mf_rust"
documentation = "https://docs.rs/lib3mf"
readme = "README.md"
keywords = ["3mf", "3d", "manufacturing", "3dprinting", "opc"]
categories = ["parser-implementations", "encoding"]
exclude = [
".github/",
"*.sh",
"*.py",
"benches/",
"docs/",
"examples/",
"fuzz/",
"test_suites/",
"test_files/",
"tests/",
"tools/"
]
[features]
default = ["mesh-ops", "polygon-ops"]
ci = []
crypto = ["dep:rsa", "dep:aes-gcm", "dep:base64", "dep:flate2", "dep:sha1", "dep:sha2"]
mesh-ops = ["dep:parry3d", "dep:nalgebra"]
polygon-ops = ["dep:clipper2", "dep:earcutr"]
[dependencies]
zip = { version = "8", default-features = false, features = [
"deflate-flate2-zlib-rs",
] }
quick-xml = "0.39.2"
thiserror = "2.0"
rsa = { version = "0.9", optional = true }
aes-gcm = { version = "0.10", optional = true }
base64 = { version = "0.22", optional = true }
flate2 = { version = "1.1", optional = true }
sha1 = { version = "0.10", optional = true }
sha2 = { version = "0.10", optional = true }
urlencoding = "2.1"
parry3d = { version = "0.26", optional = true }
nalgebra = { version = "0.34", optional = true }
clipper2 = { version = "0.5", optional = true }
earcutr = { version = "0.5", optional = true }
[dev-dependencies]
tempfile = "3.26"
zip = { version = "8", default-features = false, features = [
"deflate-flate2-zlib-rs",
] }
walkdir = "2.5"
libtest-mimic = "0.8"
criterion = "0.8"
proptest = "1.10"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
image = "0.25"
[[example]]
name = "calculate_normals"
required-features = ["mesh-ops"]
[[example]]
name = "mesh_analysis"
required-features = ["mesh-ops"]
[[example]]
name = "mesh_slicing_demo"
required-features = ["mesh-ops"]
[[example]]
name = "mesh_subdivision"
required-features = ["mesh-ops"]
[[example]]
name = "polygon_clipping_demo"
required-features = ["polygon-ops"]
[[example]]
name = "polygon_triangulation_demo"
required-features = ["polygon-ops"]
[[test]]
name = "conformance_individual"
path = "tests/conformance/individual.rs"
harness = false
[[bench]]
name = "parse_benchmark"
harness = false
[lints.rust]
unsafe_code = "forbid"