[package]
name = "noyalib"
version = "0.0.21"
edition = "2024"
rust-version = "1.86.0"
license = "MIT OR Apache-2.0"
description = "A pure Rust YAML library with zero unsafe code and full serde integration"
repository = "https://github.com/sebastienrousseau/noyalib"
homepage = "https://github.com/sebastienrousseau/noyalib"
documentation = "https://docs.rs/noyalib"
readme = "README.md"
keywords = ["yaml", "serde", "serialization", "parser", "safe"]
categories = ["encoding", "parser-implementations", "config"]
authors = ["Sebastien Rousseau <sebastian.rousseau@gmail.com>"]
autoexamples = false
include = [
"/benches/**",
"/build.rs",
"/Cargo.toml",
"/examples/**",
"/LICENSE-APACHE",
"/LICENSE-MIT",
"/README.md",
"/src/**",
"/tests/**",
]
[lib]
name = "noyalib"
path = "src/lib.rs"
[[example]]
name = "hello"
path = "examples/hello.rs"
[[example]]
name = "dynamic"
path = "examples/dynamic.rs"
[[example]]
name = "modify"
path = "examples/modify.rs"
[[example]]
name = "deep"
path = "examples/deep.rs"
[[example]]
name = "std"
path = "examples/std.rs"
[[example]]
name = "variants"
path = "examples/variants.rs"
[[example]]
name = "tags"
path = "examples/tags.rs"
[[example]]
name = "alias"
path = "examples/alias.rs"
[[example]]
name = "smart"
path = "examples/smart.rs"
[[example]]
name = "overlay"
path = "examples/overlay.rs"
[[example]]
name = "inherit"
path = "examples/inherit.rs"
[[example]]
name = "stream"
path = "examples/stream.rs"
[[example]]
name = "types"
path = "examples/types.rs"
[[example]]
name = "binary"
path = "examples/binary.rs"
[[example]]
name = "strict"
path = "examples/strict.rs"
[[example]]
name = "secure"
path = "examples/secure.rs"
[[example]]
name = "harden_untrusted"
path = "examples/harden_untrusted.rs"
[[example]]
name = "schema"
path = "examples/schema.rs"
[[example]]
name = "env"
path = "examples/env.rs"
[[example]]
name = "errors"
path = "examples/errors.rs"
[[example]]
name = "trace"
path = "examples/trace.rs"
[[example]]
name = "source"
path = "examples/source.rs"
[[example]]
name = "style"
path = "examples/style.rs"
[[example]]
name = "emit"
path = "examples/emit.rs"
[[example]]
name = "rename"
path = "examples/rename.rs"
[[example]]
name = "flatten"
path = "examples/flatten.rs"
[[example]]
name = "bridge"
path = "examples/bridge.rs"
[[example]]
name = "pipes"
path = "examples/pipes.rs"
[[example]]
name = "global"
path = "examples/global.rs"
[[example]]
name = "bench"
path = "examples/bench.rs"
[[example]]
name = "portable"
path = "examples/portable.rs"
[[example]]
name = "mask"
path = "examples/mask.rs"
[[example]]
name = "patch"
path = "examples/patch.rs"
[[example]]
name = "suggest"
path = "examples/suggest.rs"
[[example]]
name = "schema_ext"
path = "examples/schema_ext.rs"
[[example]]
name = "untagged"
path = "examples/untagged.rs"
[[example]]
name = "borrow"
path = "examples/borrow.rs"
[[example]]
name = "transcode"
path = "examples/transcode.rs"
[[example]]
name = "comments"
path = "examples/comments.rs"
[[example]]
name = "async_io"
path = "examples/async_io.rs"
[[example]]
name = "recursive"
path = "examples/recursive.rs"
[[example]]
name = "diagnostic"
path = "examples/diagnostic.rs"
[[example]]
name = "nostd"
path = "examples/nostd.rs"
[[example]]
name = "preserve"
path = "examples/preserve.rs"
[[example]]
name = "replay"
path = "examples/replay.rs"
[[example]]
name = "registry"
path = "examples/registry.rs"
[[example]]
name = "scientific"
path = "examples/scientific.rs"
[[example]]
name = "validation"
path = "examples/validation.rs"
[[example]]
name = "anchor_shared"
path = "examples/anchor_shared.rs"
[[example]]
name = "all"
path = "examples/all.rs"
[[example]]
name = "lossless_edit"
path = "examples/lossless_edit.rs"
[[example]]
name = "cst_surgical_edit"
path = "examples/cst_surgical_edit.rs"
[[example]]
name = "lossless_u64"
path = "examples/lossless_u64.rs"
required-features = ["lossless-u64"]
[[example]]
name = "comments_at"
path = "examples/comments_at.rs"
[[example]]
name = "entry_api"
path = "examples/entry_api.rs"
[[example]]
name = "flattened"
path = "examples/flattened.rs"
[[example]]
name = "schema_validation"
path = "examples/schema_validation.rs"
required-features = ["validate-schema"]
[[example]]
name = "strict_deserialise"
path = "examples/strict_deserialise.rs"
required-features = ["strict-deserialise"]
[[example]]
name = "include"
path = "examples/include.rs"
[[example]]
name = "figment"
path = "examples/figment.rs"
required-features = ["figment"]
[[example]]
name = "validation_garde"
path = "examples/validation_garde.rs"
required-features = ["garde"]
[[example]]
name = "validation_validator"
path = "examples/validation_validator.rs"
required-features = ["validator"]
[[example]]
name = "diagnostic_path"
path = "examples/diagnostic_path.rs"
[[example]]
name = "robotics_polymorphism"
path = "examples/robotics_polymorphism.rs"
required-features = ["robotics"]
[[example]]
name = "zero_copy_borrow"
path = "examples/zero_copy_borrow.rs"
[[example]]
name = "read_iterator"
path = "examples/read_iterator.rs"
[[example]]
name = "properties_interpolation"
path = "examples/properties_interpolation.rs"
[[example]]
name = "ariadne_diagnostic"
path = "examples/ariadne_diagnostic.rs"
required-features = ["ariadne"]
[[example]]
name = "validated_miette"
path = "examples/validated_miette.rs"
required-features = ["miette", "garde"]
[[example]]
name = "include_directive"
path = "examples/include_directive.rs"
required-features = ["include_fs"]
[[example]]
name = "config_macros"
path = "examples/config_macros.rs"
[[example]]
name = "i18n_formatters"
path = "examples/i18n_formatters.rs"
[[example]]
name = "recovery_lenient"
path = "examples/recovery_lenient.rs"
required-features = ["recovery"]
[[example]]
name = "sval_streaming"
path = "examples/sval_streaming.rs"
required-features = ["sval"]
[[example]]
name = "tokio_async_reader"
path = "examples/tokio_async_reader.rs"
required-features = ["tokio"]
[[example]]
name = "interner"
path = "examples/interner.rs"
[[example]]
name = "parallel"
path = "examples/parallel.rs"
required-features = ["parallel"]
[[example]]
name = "simd"
path = "examples/simd.rs"
required-features = ["simd"]
[dependencies]
serde_core = { version = "1.0", default-features = false, features = ["alloc"] }
serde = { version = "1.0", optional = true, default-features = false, features = ["derive", "alloc"] }
indexmap = { version = ">=2, <3", default-features = false, features = ["serde"] }
rustc-hash = { version = ">=2, <3", default-features = false }
hashbrown = { version = "0.15", default-features = false }
libm = { version = "0.2", default-features = false }
itoa = { version = "1", optional = true }
ryu = { version = "1", optional = true }
memchr = { version = "2.7", default-features = false }
smallvec = { version = "1.13", default-features = false }
miette = { version = "7", optional = true }
ariadne = { version = "0.5", optional = true, default-features = false }
garde = { version = "0.22", optional = true, default-features = false, features = ["derive"] }
validator = { version = "0.21", optional = true, features = ["derive"] }
schemars = { version = "1.2", optional = true, default-features = false, features = ["derive", "std"] }
serde_json = { version = "1.0", optional = true }
jsonschema = { version = "0.49", optional = true, default-features = false }
figment = { version = "0.10", optional = true, features = ["env"] }
serde-saphyr = { version = "1.0", optional = true }
rayon = { version = "1.10", optional = true }
serde_ignored = { version = "0.1", optional = true }
sval = { version = "2", optional = true, default-features = false }
tokio = { version = "1", optional = true, default-features = false, features = ["io-util"] }
tokio-util = { version = "0.7", optional = true, default-features = false, features = ["codec"] }
bytes = { version = "1", optional = true, default-features = false }
[dev-dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_bytes = "0.11"
criterion = "0.8"
proptest = "1.11"
serde_yaml_ng = "0.10"
yaml-rust2 = "0.11"
rust-yaml = "1.0.1"
yaml-spanned = "0.0"
serde_path_to_error = "0.1"
serde_ignored = "0.1"
tokio = { version = "1", features = ["macros", "rt", "io-util"] }
[[bench]]
name = "benchmarks"
harness = false
[[bench]]
name = "comparison"
harness = false
[[bench]]
name = "architecture"
harness = false
[[bench]]
name = "validation_overhead"
harness = false
[[bench]]
name = "incremental_repair"
harness = false
[[bench]]
name = "simd"
harness = false
required-features = ["simd"]
[[bench]]
name = "streaming_vs_value"
harness = false
[[bench]]
name = "mapping_key_clone"
harness = false
[[bench]]
name = "interner"
harness = false
[[bench]]
name = "parallel"
harness = false
required-features = ["parallel"]
[[bench]]
name = "borrowed_vs_value"
harness = false
[[bench]]
name = "large_doc_soak"
harness = false
[[bench]]
name = "structural_bitmask"
harness = false
[[bench]]
name = "numeric_parse"
harness = false
[[bench]]
name = "lossless_u64"
harness = false
required-features = ["lossless-u64"]
[[bench]]
name = "v006_features"
harness = false
required-features = ["recovery", "sval", "tokio"]
[features]
default = ["std", "fast-int", "fast-float", "strict-deserialise"]
fast-int = ["dep:itoa"]
fast-float = ["dep:ryu"]
strict-deserialise = ["dep:serde_ignored"]
minimal = ["std"]
std = [
"serde_core/std",
"serde?/std",
"indexmap/std",
"rustc-hash/std",
"memchr/std",
]
miette = ["dep:miette"]
ariadne = ["dep:ariadne"]
robotics = ["dep:serde"]
include = []
include_fs = ["include", "std"]
garde = ["dep:garde"]
validator = ["dep:validator"]
wasm-opt = []
noyavalidate = ["std", "miette", "miette/fancy", "validate-schema"]
compat-serde-yaml = []
lossless-u64 = []
schema = ["dep:schemars", "dep:serde_json"]
validate-schema = ["schema", "dep:jsonschema"]
figment = ["dep:figment", "std"]
simd = []
compare-saphyr = ["dep:serde-saphyr"]
tokio = ["dep:tokio", "dep:tokio-util", "dep:bytes", "std"]
sval = ["dep:sval"]
recovery = ["std"]
parallel = ["dep:rayon", "std"]
nightly-simd = ["simd"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(noyalib_nightly)',
'cfg(noyalib_coverage)',
'cfg(docsrs)',
] }
missing_copy_implementations = "warn"
missing_docs = "warn"
unstable_features = "warn"
unused_extern_crates = "warn"
unused_results = "warn"
bare_trait_objects = "allow"
elided_lifetimes_in_paths = "allow"
missing_debug_implementations = "forbid"
non_ascii_idents = "forbid"
unreachable_pub = "forbid"
unsafe_code = "forbid"
dead_code = "deny"
deprecated_in_future = "deny"
ellipsis_inclusive_range_patterns = "deny"
explicit_outlives_requirements = "deny"
future_incompatible = { level = "deny", priority = -1 }
keyword_idents = { level = "deny", priority = -1 }
macro_use_extern_crate = "deny"
meta_variable_misuse = "deny"
noop_method_call = "deny"
rust_2018_idioms = { level = "deny", priority = -1 }
rust_2021_compatibility = { level = "deny", priority = -1 }
single_use_lifetimes = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"
unused = { level = "deny", priority = -1 }
unused_features = "deny"
unused_import_braces = "deny"
unused_labels = "deny"
unused_lifetimes = "deny"
unused_macro_rules = "deny"
unused_qualifications = "deny"
variant_size_differences = "deny"
[lints.clippy]
cargo = { level = "warn", priority = -1 }
multiple_crate_versions = "allow"
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
unused_trait_names = "warn"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
default_trait_access = "allow"
doc_markdown = "allow"
float_cmp = "allow"
fn_params_excessive_bools = "allow"
format_collect = "allow"
format_push_string = "allow"
items_after_statements = "allow"
manual_let_else = "allow"
many_single_char_names = "allow"
match_same_arms = "allow"
match_wildcard_for_single_variants = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
naive_bytecount = "allow"
needless_continue = "allow"
needless_pass_by_value = "allow"
redundant_closure_for_method_calls = "allow"
redundant_else = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
struct_field_names = "allow"
too_many_lines = "allow"
unnecessary_wraps = "allow"
unreadable_literal = "allow"
unused_self = "allow"
used_underscore_binding = "allow"
zero_sized_map_values = "allow"
branches_sharing_code = "allow"
doc_link_code = "allow"
literal_string_with_formatting_args = "allow"
missing_const_for_fn = "allow"
needless_collect = "allow"
needless_pass_by_ref_mut = "allow"
option_if_let_else = "allow"
or_fun_call = "allow"
redundant_pub_crate = "allow"
significant_drop_tightening = "allow"
single_option_map = "allow"
too_long_first_doc_paragraph = "allow"
useless_let_if_seq = "allow"