disarm 0.10.0

Unicode canonicalization and TR39 confusable analysis: building blocks for text-security pipelines (homoglyph/bidi/zalgo handling) plus standards-based transliteration
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 = "2021"
rust-version = "1.81"
name = "disarm"
version = "0.10.0"
build = "build.rs"
include = [
    "/src/**/*",
    "/tests/*.rs",
    "/tests/common/*.rs",
    "/benchmarks/*.rs",
    "/examples/*.rs",
    "/build.rs",
    "/Cargo.toml",
    "/README.md",
    "/LICENSE",
    "/docs/RUST_API.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Unicode canonicalization and TR39 confusable analysis: building blocks for text-security pipelines (homoglyph/bidi/zalgo handling) plus standards-based transliteration"
homepage = "https://disarm.dev"
documentation = "https://docs.rs/disarm"
readme = "README.md"
keywords = [
    "unicode-security",
    "homoglyph",
    "confusable",
    "transliteration",
    "normalization",
]
categories = [
    "text-processing",
    "internationalization",
    "encoding",
]
license = "MIT"
repository = "https://github.com/raeq/disarm"

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

[features]
default = []
embed-dicts = []
extension-module = [
    "dep:pyo3",
    "pyo3/extension-module",
]
log = ["dep:log"]
log-content = ["log"]

[lib]
name = "disarm"
crate-type = [
    "cdylib",
    "lib",
]
path = "src/lib.rs"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[bench]]
name = "bench_core"
path = "benchmarks/bench_core.rs"
harness = false

[[bench]]
name = "bench_iai"
path = "benchmarks/bench_iai.rs"
harness = false

[[bench]]
name = "bench_personas"
path = "benchmarks/bench_personas.rs"
harness = false

[dependencies.aho-corasick]
version = "1"

[dependencies.bitflags]
version = "2"

[dependencies.chardetng]
version = "1.0"

[dependencies.encoding_rs]
version = "0.8"

[dependencies.idna]
version = "1"

[dependencies.log]
version = "0.4"
optional = true

[dependencies.phf]
version = "0.13"

[dependencies.pyo3]
version = "0.29.0"
features = ["abi3-py310"]
optional = true

[dependencies.regex]
version = "1"

[dependencies.thiserror]
version = "2.0.18"

[dependencies.unicode-normalization]
version = "0.1"

[dependencies.unicode-segmentation]
version = "1"

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

[dev-dependencies.iai-callgrind]
version = "0.16.1"

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

[build-dependencies.phf_codegen]
version = "0.13"

[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
fn_params_excessive_bools = "allow"
implicit_hasher = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_pass_by_value = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
too_many_arguments = "allow"
too_many_lines = "allow"
type_complexity = "allow"
unnecessary_wraps = "allow"
unused_self = "allow"
used_underscore_items = "allow"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "forbid"

[profile.release]
lto = true
codegen-units = 1
strip = true