en16931 0.2.0

The EN 16931 semantic data model and its business rules, as Rust types. Validates the model rather than a serialised document, so findings point at BT-151 on line 3 instead of at an XPath. No XML, no PDF, no I/O.
Documentation
# 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"
rust-version = "1.88"
name = "en16931"
version = "0.2.0"
authors = ["hupe1980"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "The EN 16931 semantic data model and its business rules, as Rust types. Validates the model rather than a serialised document, so findings point at BT-151 on line 3 instead of at an XPath. No XML, no PDF, no I/O."
readme = "README.md"
keywords = [
    "einvoice",
    "en16931",
    "invoice",
    "xrechnung",
    "peppol",
]
categories = [
    "finance",
    "data-structures",
    "encoding",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/hupe1980/en16931"

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

[features]
billing = ["dep:billing"]
chrono = ["dep:chrono"]
default = []
sepa = ["dep:sepa"]
serde = [
    "dep:serde",
    "rust_decimal/serde",
]
svrl = []
time = ["dep:time"]

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

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

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

[[example]]
name = "report_formats"
path = "examples/report_formats.rs"
required-features = [
    "serde",
    "svrl",
]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[dependencies.billing]
version = "0.10"
optional = true

[dependencies.chrono]
version = "0.4"
optional = true
default-features = false

[dependencies.rust_decimal]
version = "1.42"
features = ["std"]
default-features = false

[dependencies.sepa]
version = "0.5"
optional = true
default-features = false

[dependencies.serde]
version = "1"
features = ["derive"]
optional = true

[dependencies.thiserror]
version = "2"

[dependencies.time]
version = "0.3"
optional = true
default-features = false

[dev-dependencies.criterion]
version = "0.7.0"
features = ["html_reports"]

[dev-dependencies.proptest]
version = "1.11.0"

[dev-dependencies.roxmltree]
version = "0.21"

[dev-dependencies.rust_decimal]
version = "1.42"
features = [
    "std",
    "macros",
]
default-features = false

[dev-dependencies.serde_json]
version = "1"