lib3mf 0.1.6

Pure Rust implementation for 3MF (3D Manufacturing Format) parsing and writing
Documentation
[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"]

# Enable this feature in CI to run tests that require external test_suites folder

ci = []

# Enable cryptographic support for SecureContent extension decryption

crypto = ["dep:rsa", "dep:aes-gcm", "dep:base64", "dep:flate2", "dep:sha1", "dep:sha2"]

# Enable advanced mesh operations (volume, AABB, validation, subdivision, slicing)

mesh-ops = ["dep:parry3d", "dep:nalgebra"]

# Enable polygon operations (boolean operations, triangulation)

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"

# Cryptographic dependencies for SecureContent decryption (optional, enabled via 'crypto' feature)

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"

# Geometry dependencies for advanced mesh operations (optional, enabled via 'mesh-ops' feature)

parry3d = { version = "0.26", optional = true }

nalgebra = { version = "0.34", optional = true }

# Polygon operation dependencies (optional, enabled via 'polygon-ops' feature)

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"