content: [package]
  name = "otel-arrow-rust"
  version = "0.1.0"
  edition = "2024"
  repository = "https://github.com/open-telemetry/otel-arrow"
  license = "Apache-2.0"
  description = "Rust implementation of otel-arrow"
  categories = [
      "development-tools",
      "development-tools",
      "api-bindings",
      "asynchronous"
  ]
  keywords = ["arrow", "opentelemetry", "logging", "tracing", "metrics"]
  rust-version = "1.87.0"
  
  [features]
  default = ["full"]
  full = ["client", "server", "trace"]
  client = []
  server = []
  trace = []
  derive = []
  
  [dependencies]
  ahash = "0.8.11"
  arrow = "56.1"
  arrow-ipc = { version = "56.1", features = ["zstd"] }
  ciborium = "0.2.2"
  lazy_static = "1.5"
  num_enum = "0.7"
  otlp-derive = { path = "./src/pdata/otlp/derive" }
  paste = "1.0.15"
  rand = "0.9"
  serde = { version = "1.0", features = ["derive"] }
  snafu = { version = "0.8" }
  prost = "0.14"
  replace_with = "0.1.8"
  tonic = "0.14"
  tonic-prost = "0.14"
  tokio = { version = "1.43.0", features = ["rt", "time", "net", "io-util", "sync", "macros", "rt-multi-thread", "process"] }
  itertools = "0.14.0"
  smallvec = { version = "1.15.1", features = ["union"] }
  roaring = "0.11.2"
  
  [[bench]]
  name = "attribute_transform"
  harness = false
  
  [[bench]]
  name = "otlp_bytes"
  harness = false
  
  [[bench]]
  name = "materialize_parent_id"
  harness = false
  
  [[bench]]
  name = "item_count"
  harness = false
  
  [dev-dependencies]
  rand = "0.9"
  nix = { version = "0.30.0", features = ["process", "signal"] }
  tokio-stream = "0.1.17"
  criterion = { version = "0.7" }
  arrow-schema = "56.0.0"
  pretty_assertions = "1.4.1"
  
  [build-dependencies]
  tonic-prost-build = "0.14"
  prost-build = "0.14"
  otlp-model = { path = "./src/pdata/otlp/model" }
  
  [lints.rust]
  # General compatibility lints
  rust_2018_idioms = { level = "warn", priority = -1 }
  rust_2021_compatibility = { level = "warn", priority = -1 }
  rust_2024_compatibility = { level = "warn", priority = -1 }
  future_incompatible = { level = "warn", priority = -1 }
  nonstandard_style = { level = "warn", priority = -1 }
  
  # Strict safety & quality standards
  missing_docs = "deny"
  unsafe_code = "deny"
  unstable_features = "deny"
  unused_import_braces = "deny"
  unused_qualifications = "deny"
  unused_results = "deny"
  trivial_numeric_casts = "deny"
  variant_size_differences = "deny"
  unused_extern_crates = "deny"
  
  # Additional helpful warnings
  unused_lifetimes = "warn"
  semicolon_in_expressions_from_macros = "warn"
  unsafe_op_in_unsafe_fn = "warn"
  unused_macro_rules = "warn"
  
  [lints.clippy]
  # Strong defaults: deny problematic patterns
  cargo = { level = "deny", priority = -1 }
  correctness = { level = "deny", priority = -1 }
  perf = { level = "deny", priority = -1 }
  complexity = { level = "warn", priority = -1 }
  style = { level = "warn", priority = -1 }
  suspicious = { level = "warn", priority = -1 }
  restriction = { level = "allow", priority = -1 }
  
  # Specific Clippy lint customizations
  unwrap_used = "deny"
  print_stdout = "deny"
  print_stderr = "deny"
  must-use-candidate = "warn"
  await_holding_lock = "warn"
  manual_async_fn = "warn"
  dbg_macro = "warn"
  explicit_into_iter_loop = "warn"
  
  # Explicitly allowed practical exceptions
  multiple_crate_versions = "allow"
  too_many_arguments = "allow"
  type_complexity = "allow"
  wrong_self_convention = "allow"
  module_name_repetitions = "allow"
  
  [profile.bench]
  debug = "line-tables-only"
  strip = "none"
  