content: [workspace.package]
  edition = "2024"
  license = "MIT OR Apache-2.0"
  homepage = "https://maybenot.io"
  keywords = [ "anonymity", "correlation", "fingerprinting", "privacy", "security" ]
  categories = [ "cryptography", "network-programming" ]
  repository = "https://github.com/maybenot-io/maybenot"
  # Keep MSRV in sync with oldest Rust version in CI in .github/workflows/build-and-test.yml
  rust-version = "1.85.0"
  
  [workspace]
  resolver = "2"
  # Please keep this list topologically sorted by dependency relation, so that
  # every crate appears _before_ any other crate that depends on it.
  members = [
      # lib for the Maybenot framework
      "crates/maybenot",
      # ffi lib for the Maybenot framework
      "crates/maybenot-ffi",
      # simulator for the Maybenot framework
      "crates/maybenot-simulator",
      # lib of implemented Maybenot machines
      "crates/maybenot-machines",
      # lib to help generate and evaluate Maybenot defenses
      "crates/maybenot-gen",
      # CLI tool for defense generation using Maybenot
      "crates/maybenot-cli",
      # benchmarks
      "benches",
      # fuzzing
      "fuzz",
  ]
  
  [workspace.lints.rust]
  warnings = { level = "deny", priority = -1 }
  # Security
  non_ascii_idents = "forbid"
  unsafe_code = "warn"
  # Deny old style Rust
  rust_2018_idioms = { level = "deny", priority = -1 }
  macro_use_extern_crate = "deny"
  absolute_paths_not_starting_with_crate = "deny"
  # Easy to read style and opinionated best practices
  explicit_outlives_requirements = "warn"
  missing_abi = "deny"
  single_use_lifetimes = "warn"
  unused_lifetimes = "warn"
  unused_macro_rules = "warn"
  
  [workspace.lints.clippy]
  cargo = { level = "warn", priority = -1 }
  dbg_macro = "warn"
  implicit_clone = "warn"
  manual_let_else = "warn"
  redundant_closure_for_method_calls = "warn"
  unused_async = "deny"
  undocumented_unsafe_blocks = "warn"
  wildcard_imports = "warn"
  
  # for cargo +nightly update -Z minimal-versions
  multiple-crate-versions = "allow"
  
  # once we move up rust versions, enable below
  # unnecessary_semicolon = "warn"
  
  # once we move up rust versions, warn on below
  collapsible_if = "allow"
  
  [profile.release]
  lto = true
  codegen-units = 1
  