emailaddr 0.1.1

Type-safe, zero-copy, validated email addresses with generic storage, IDNA domain support, and no_std/no-alloc compatibility.
Documentation
[package]
name = "emailaddr"
version = "0.1.1"
edition = "2024"
repository = "https://github.com/al8n/emailaddr"
homepage = "https://github.com/al8n/emailaddr"
documentation = "https://docs.rs/emailaddr"
description = "Type-safe, zero-copy, validated email addresses with generic storage, IDNA domain support, and no_std/no-alloc compatibility."
categories = ["email", "internationalization", "no-std", "no-std::no-alloc", "parser-implementations"]
keywords = ["email", "email-address", "validation", "emailaddress", "idna"]
license = "MIT OR Apache-2.0"
rust-version = "1.86"

[features]
default = ["std"]
alloc = ["idna/alloc", "idna/compiled_data", "zeroize?/alloc"]
serde = ["dep:serde_core"]
std = ["idna/default", "thiserror/default", "zeroize?/alloc"]
clap = ["std", "dep:clap"]
zeroize = ["dep:zeroize"]
bytes_1 = ["dep:bytes_1", "alloc"]
bytes = ["bytes_1"]
smallvec_1 = ["dep:smallvec_1", "alloc", "smallvec_1/const_generics"]
smallvec = ["smallvec_1"]
smol_str_0_3 = ["dep:smol_str_0_3", "alloc"]
smol_str = ["smol_str_0_3"]
tinyvec_1 = ["dep:tinyvec_1", "alloc", "tinyvec_1/alloc"]
tinyvec = ["tinyvec_1"]
triomphe_0_1 = ["dep:triomphe_0_1", "alloc"]
triomphe = ["triomphe_0_1"]
arbitrary = [
  "dep:arbitrary",
  "smallvec_1?/arbitrary",
  "smol_str_0_3?/arbitrary",
  "tinyvec_1?/arbitrary",
]
quickcheck = ["dep:quickcheck", "alloc"]

[dependencies]
either = { version = "1", default-features = false }
idna = { version = "1", default-features = false, optional = true }
serde_core = { version = "1", default-features = false, features = ["result"], optional = true }
thiserror = { version = "2", default-features = false }
arbitrary = { version = "1", default-features = false, optional = true }
bytes_1 = { package = "bytes", version = "1", default-features = false, optional = true }
clap = { version = "4", default-features = false, features = ["derive", "std"], optional = true }
quickcheck = { version = "1", default-features = false, optional = true }
smallvec_1 = { package = "smallvec", version = "1", default-features = false, optional = true }
smol_str_0_3 = { package = "smol_str", version = "0.3", default-features = false, optional = true }
tinyvec_1 = { package = "tinyvec", version = "1", default-features = false, features = ["rustc_1_61"], optional = true }
triomphe_0_1 = { package = "triomphe", version = "0.1", default-features = false, optional = true }
zeroize = { version = "1", default-features = false, optional = true }

[dev-dependencies]
bincode = "1"
serde_json = "1"
toml = "1"
yaml_serde = "0.10"

[profile.bench]
opt-level = 3
debug = false
codegen-units = 1
lto = 'thin'
incremental = false
debug-assertions = false
overflow-checks = false
rpath = false

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

[lints]
workspace = true

[workspace.lints.rust]
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"
unexpected_cfgs = { level = "warn", check-cfg = [
  'cfg(all_tests)',
  'cfg(coverage)',
] }