content: [workspace]
  members = [
    "fuzz",
    "mtu",
    "neqo-bin",
    "neqo-common",
    "neqo-crypto",
    "neqo-http3",
    "neqo-qpack",
    "neqo-transport",
    "neqo-udp",
    "test-fixture",
  ]
  resolver = "2"
  
  [workspace.package]
  homepage = "https://github.com/mozilla/neqo/"
  repository = "https://github.com/mozilla/neqo/"
  authors = ["The Neqo Authors <necko@mozilla.com>"]
  description = "Neqo, the Mozilla implementation of QUIC in Rust."
  keywords = ["quic", "http3", "neqo", "mozilla", "ietf", "firefox"]
  categories = ["network-programming", "web-programming"]
  readme = "README.md"
  version = "0.16.1"
  # Keep in sync with `.rustfmt.toml` `edition`.
  edition = "2021"
  license = "MIT OR Apache-2.0"
  # Don't increase beyond what Firefox is currently using:
  # https://searchfox.org/mozilla-central/search?q=MINIMUM_RUST_VERSION&path=python/mozboot/mozboot/util.py
  # In addition, currently Mozilla CI uses a Rust fork before the official Rust 1.82.0 release, thus stay on 1.81.0 for now.
  # https://bugzilla.mozilla.org/show_bug.cgi?id=1968057#c1
  rust-version = "1.81.0"
  
  [workspace.dependencies]
  enum-map = { version = "2.7", default-features = false }
  enumset = { version = "1.1", default-features = false }
  hex = { version = "0.4", default-features = false }
  libc = { version = "0.2", default-features = false }
  log = { version = "0.4", default-features = false }
  qlog = { version = "0.15.1", default-features = false }
  quinn-udp = { version = "0.5.13", default-features = false, features = ["direct-log"] }
  regex = { version = "1.9", default-features = false }
  rustc-hash = { version = "2.1", default-features = false, features = [ "std" ]}
  static_assertions = { version = "1.1", default-features = false }
  strum = { version = "0.27", default-features = false, features = ["derive"] }
  thiserror = { version = "2.0.12", default-features = false }
  url = { version = "2.5", default-features = false, features = ["std"] }
  windows = { version = "0.58", default-features = false }
  
  [workspace.lints.rust]
  absolute_paths_not_starting_with_crate = "warn"
  # TODO: Re-activate with MSRV 1.82.0. See
  # https://github.com/mozilla/neqo/pull/2661 for details.
  # ambiguous_negative_literals = "warn"
  explicit_outlives_requirements = "warn"
  macro_use_extern_crate = "warn"
  missing_abi = "warn"
  non_ascii_idents = "warn"
  # TODO: Re-activate with MSRV 1.82.0. See
  # https://github.com/mozilla/neqo/pull/2661 for details.
  # redundant_imports = "warn"
  redundant_lifetimes = "warn"
  trivial_numeric_casts = "warn"
  unit_bindings = "warn"
  unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage,coverage_nightly)'] }
  unused_import_braces = "warn"
  unused_lifetimes = "warn"
  unused_macro_rules = "warn"
  unused_qualifications = "warn"
  
  [workspace.lints.clippy]
  cargo = { level = "warn", priority = -1 }
  nursery = { level = "warn", priority = -1 }
  pedantic = { level = "warn", priority = -1 }
  allow_attributes = "warn"
  allow_attributes_without_reason = "warn"
  cfg_not_test = "warn"
  clone_on_ref_ptr = "warn"
  create_dir = "warn"
  dbg_macro = "warn"
  empty_drop = "warn"
  empty_enum_variants_with_brackets = "warn"
  field_scoped_visibility_modifiers = "warn"
  filetype_is_file = "warn"
  float_cmp_const = "warn"
  fn_to_numeric_cast_any = "warn"
  get_unwrap = "warn"
  if_then_some_else_none = "warn"
  # TODO: Re-activate with MSRV 1.82.0. See
  # https://github.com/mozilla/neqo/pull/2661 for details.
  # impl_trait_in_params = "warn"
  infinite_loop = "warn"
  iter_over_hash_type = "warn"
  large_include_file = "warn"
  let_underscore_must_use = "warn"
  let_underscore_untyped = "warn"
  literal_string_with_formatting_args = "allow" # FIXME: Re-enable "warn" when MSRV is > 1.87. See https://github.com/rust-lang/rust-clippy/pull/13953#issuecomment-2676336899
  lossy_float_literal = "warn"
  map_with_unused_argument_over_ranges = "warn"
  mem_forget = "warn"
  missing_asserts_for_indexing = "warn"
  mixed_read_write_in_expression = "warn"
  module_name_repetitions = "warn"
  multiple_crate_versions = "allow"
  multiple_inherent_impl = "warn"
  mutex_atomic = "warn"
  mutex_integer = "warn"
  needless_raw_strings = "warn"
  non_ascii_literal = "warn"
  non_zero_suggestions = "warn"
  partial_pub_fields = "warn"
  pathbuf_init_then_push = "warn"
  precedence_bits = "warn"
  pub_without_shorthand = "warn"
  rc_buffer = "warn"
  rc_mutex = "warn"
  redundant_test_prefix = "warn"
  redundant_type_annotations = "warn"
  ref_patterns = "warn"
  renamed_function_params = "warn"
  rest_pat_in_fully_bound_structs = "warn"
  return_and_then = "warn"
  self_named_module_files = "warn"
  semicolon_inside_block = "warn"
  string_lit_chars_any = "warn"
  suspicious_xor_used_as_pow = "warn"
  try_err = "warn"
  unnecessary_safety_comment = "warn"
  unnecessary_safety_doc = "warn"
  unnecessary_self_imports = "warn"
  unneeded_field_pattern = "warn"
  unused_result_ok = "warn"
  unused_trait_names = "warn"
  unwrap_in_result = "warn"
  unwrap_used = "warn"
  verbose_file_reads = "warn"
  
  # Optimize build dependencies, because bindgen and proc macros / style
  # compilation take more to run than to build otherwise.
  [profile.dev.build-override]
  opt-level = 1
  
  [profile.release]
  lto = "fat"
  
  [profile.bench]
  # Inherits from the "release" profile, so just provide overrides here:
  # https://doc.rust-lang.org/cargo/reference/profiles.html#release
  debug = true
  
  [profile.profiling]
  inherits = "release"
  debug = true
  