content: #cargo-features = ["profile-rustflags"]
  
  [workspace]
  resolver = "2"
  members = ["src/*"]
  default-members = ["src/*"]
  
  [workspace.package]
  authors = [
  	"Timo Kösters <timo@koesters.xyz>",
  	"June Clementine Strawberry <june@girlboss.ceo>",
  	"Jason Volk <jason@zemos.net>",
  	"Conduit Contributors",
  	"Conduwuit Contributors",
  	"Tuwunel Contributors",
  ]
  categories = ["network-programming"]
  description = "High Performance Matrix Homeserver in Rust!"
  edition = "2024"
  homepage = "https://tuwunel.chat"
  keywords = [
  	"chat",
  	"matrix",
  	"networking",
  	"server",
  	"uwu",
  ]
  license = "Apache-2.0"
  readme = "README.md"
  repository = "https://github.com/matrix-construct/tuwunel"
  rust-version = "1.88.0"
  version = "1.4.3"
  
  [workspace.metadata.crane]
  name = "tuwunel"
  
  #
  # Dependencies
  #
  
  [workspace.dependencies.argon2]
  version = "0.5"
  default-features = false
  features = [
  	"alloc",
  	"rand",
  ]
  
  [workspace.dependencies.arrayvec]
  version = "0.7"
  features = ["serde"]
  
  [workspace.dependencies.async-channel]
  version = "2.3.1"
  
  [workspace.dependencies.async-trait]
  version = "0.1"
  
  [workspace.dependencies.axum]
  version = "0.8"
  default-features = false
  features = [
  	"form",
  	"http1",
  	"http2",
  	"json",
  	"matched-path",
  	"tokio",
  	"tracing",
  ]
  
  [workspace.dependencies.axum-client-ip]
  version = "0.7"
  
  [workspace.dependencies.axum-extra]
  version = "0.10"
  default-features = false
  features = [
  	"typed-header",
  	"tracing",
  ]
  
  [workspace.dependencies.axum-server]
  version = "0.7"
  default-features = false
  
  [workspace.dependencies.axum-server-dual-protocol]
  version = "0.7"
  default-features = false
  
  [workspace.dependencies.base64]
  version = "0.22"
  default-features = false
  
  [workspace.dependencies.blurhash]
  version = "0.2"
  default-features = false
  features = [
  	"fast-linear-to-srgb",
  	"image",
  ]
  
  [workspace.dependencies.bytes]
  version = "1.10"
  
  [workspace.dependencies.bytesize]
  version = "2.0"
  
  [workspace.dependencies.cargo_toml]
  version = "0.22"
  default-features = false
  features = ["features"]
  
  [workspace.dependencies.checked_ops]
  version = "0.1"
  
  [workspace.dependencies.chrono]
  version = "0.4"
  features = ["alloc", "std"]
  default-features = false
  
  [workspace.dependencies.clap]
  version = "4.5"
  default-features = false
  features = [
  	"derive",
  	"env",
  	"error-context",
  	"help",
  	"std",
  	"string",
  	"usage",
  ]
  
  # Disabled until Axum updated. Remember to remove cfgs for tuwunel_disable.
  #[workspace.dependencies.console-subscriber]
  #version = "0.4"
  
  [workspace.dependencies.core_affinity]
  version = "0.8.3"
  
  [workspace.dependencies.const-str]
  version = "0.7"
  
  [workspace.dependencies.criterion]
  version = "0.7"
  default-features = false
  features = [
  	"cargo_bench_support",
  	"async_futures",
  	"async_tokio",
  ]
  
  [workspace.dependencies.ctor]
  version = "0.5"
  
  [workspace.dependencies.cyborgtime]
  version = "2.1"
  
  [workspace.dependencies.either]
  version = "1.15"
  default-features = false
  features = ["serde"]
  
  [workspace.dependencies.figment]
  version = "0.10"
  default-features = false
  features = ["env", "toml"]
  
  [workspace.dependencies.futures]
  version = "0.3"
  default-features = false
  features = ["std", "async-await"]
  
  [workspace.dependencies.hickory-resolver]
  version = "0.25"
  default-features = false
  features = [
  	"serde",
  	"system-config",
  	"tokio",
  ]
  
  [workspace.dependencies.hmac]
  version = "0.12"
  default-features = false
  
  [workspace.dependencies.http]
  version = "1.3"
  
  [workspace.dependencies.http-body-util]
  version = "0.1"
  
  [workspace.dependencies.hyper]
  version = "1.6"
  default-features = false
  features = [
  	"server",
  	"http1",
  	"http2",
  ]
  
  [workspace.dependencies.hyper-util]
  version = "0.1.14"
  default-features = false
  features = [
  	"server-auto",
  	"server-graceful",
  	"tokio",
  ]
  
  [workspace.dependencies.image]
  version = "0.25"
  default-features = false
  features = [
  	"jpeg",
  	"png",
  	"gif",
  	"webp",
  ]
  
  [workspace.dependencies.insta]
  version = "1.43"
  features = [
  	"json",
  ]
  
  [workspace.dependencies.ipaddress]
  version = "0.1"
  
  [workspace.dependencies.itertools]
  version = "0.14"
  
  [workspace.dependencies.jsonwebtoken]
  version = "9.3"
  default-features = false
  features = ["use_pem"]
  
  [workspace.dependencies.ldap3]
  git = "https://github.com/matrix-construct/ldap3"
  rev = "7d423314b9dbc66347284e38fc2b78c3d8f3d494"
  default-features = false
  features = ["sync", "tls-rustls"]
  
  [workspace.dependencies.libc]
  version = "0.2"
  
  [workspace.dependencies.libloading]
  version = "0.8"
  
  [workspace.dependencies.log]
  version = "0.4"
  default-features = false
  
  [workspace.dependencies.loole]
  version = "0.4"
  
  [workspace.dependencies.lru-cache]
  version = "0.1"
  
  [workspace.dependencies.maplit]
  version = "1.0"
  
  [workspace.dependencies.minicbor]
  version = "2.0"
  features = ["std"]
  
  [workspace.dependencies.minicbor-serde]
  version = "0.6"
  features = ["std"]
  
  [workspace.dependencies.nix]
  version = "0.30"
  default-features = false
  features = [
  	"resource",
  	"user",
  ]
  
  [workspace.dependencies.num-traits]
  version = "0.2"
  
  [workspace.dependencies.opentelemetry]
  version = "0.30.0"
  
  # Disabled until they move to opentelemetry 0.30
  #[workspace.dependencies.opentelemetry-jaeger]
  #version = "0.22.0"
  #features = ["rt-tokio"]
  
  [workspace.dependencies.opentelemetry_sdk]
  version = "0.30"
  features = ["rt-tokio"]
  
  [workspace.dependencies.proc-macro2]
  version = "1.0"
  
  [workspace.dependencies.quote]
  version = "1.0"
  
  [workspace.dependencies.rand]
  version = "0.8"
  
  [workspace.dependencies.regex]
  version = "1.11"
  
  [workspace.dependencies.reqwest]
  version = "0.12"
  default-features = false
  features = [
  	"rustls-tls-native-roots",
  	"socks",
  	"hickory-dns",
  	"http2",
  ]
  
  [workspace.dependencies.ring]
  version = "0.17"
  default-features = false
  
  [workspace.dependencies.ruma]
  git = "https://github.com/matrix-construct/ruma"
  rev = "3c26be1e4d670c2c71e2bc84b3f09c67c4188612"
  features = [
      "__compat",
      "appservice-api-c",
      "client-api",
      "client-api-s",
      "compat-upload-signatures",
      "federation-api",
      "identifiers-validation",
      "markdown",
      "push-gateway-api-c",
      "rand",
      "ring-compat",
      "unstable-msc2448",
      "unstable-msc2666",
      "unstable-msc2867",
      "unstable-msc2870",
      "unstable-msc3026",
      "unstable-msc3061",
      "unstable-msc3245",
      "unstable-msc3381", # polls
      "unstable-msc3489", # beacon / live location
      "unstable-msc3930", # polls push rules
      "unstable-msc4075",
      "unstable-msc4095",
      "unstable-msc4121",
      "unstable-msc4125",
      "unstable-msc4133",
      "unstable-msc4186",
      "unstable-msc4203", # sending to-device events to appservices 
      "unstable-msc4310",
      "unstable-msc4311",
      "unstable-extensible-events",
  ]
  
  [workspace.dependencies.rustls]
  version = "0.23"
  default-features = false
  features = ["aws_lc_rs"]
  
  [workspace.dependencies.rustyline-async]
  version = "0.4.6"
  default-features = false
  
  [workspace.dependencies.rust-rocksdb]
  git = "https://github.com/matrix-construct/rust-rocksdb"
  rev = "225a42519276e502205bdc845cebdb22d70ee245"
  default-features = false
  features = [
  	"bzip2",
  	"lz4",
  	"multi-threaded-cf",
  	"mt_static",
  	"zstd",
  ]
  
  [workspace.dependencies.sanitize-filename]
  version = "0.6"
  
  [workspace.dependencies.sd-notify]
  version = "0.4"
  default-features = false
  
  [workspace.dependencies.sentry]
  version = "0.42"
  default-features = false
  features = [
      "backtrace",
      "contexts",
      "debug-images",
      "panic",
      "rustls",
      "tower",
      "tower-http",
      "tracing",
      "reqwest",
      "log",
  ]
  
  [workspace.dependencies.sentry-tower]
  version = "0.42"
  
  [workspace.dependencies.sentry-tracing]
  version = "0.42"
  
  [workspace.dependencies.serde]
  version = "1.0"
  default-features = false
  features = ["rc"]
  
  [workspace.dependencies.serde_html_form]
  version = "0.2"
  
  [workspace.dependencies.serde_json]
  version = "1.0"
  default-features = false
  features = ["raw_value"]
  
  [workspace.dependencies.serde_regex]
  version = "1.1"
  
  [workspace.dependencies.serde_yaml]
  version = "0.9"
  
  [workspace.dependencies.sha1]
  version = "0.10"
  default-features = false
  
  [workspace.dependencies.sha2]
  version = "0.10"
  default-features = false
  
  [workspace.dependencies.similar]
  version = "2.7"
  
  [workspace.dependencies.smallstr]
  version = "0.3"
  features = [
  	"ffi",
  	"serde",
  	"std",
  	"union",
  ]
  
  [workspace.dependencies.smallvec]
  version = "1.15"
  features = [
  	"const_generics",
  	"const_new",
  	"serde",
  	"union",
  	"write",
  ]
  
  [workspace.dependencies.syn]
  version = "2.0"
  default-features = false
  features = [
  	"extra-traits",
  	"full",
  	"parsing",
  	"proc-macro",
  	"printing",
  ]
  
  [workspace.dependencies.termimad]
  version = "0.34"
  default-features = false
  
  [workspace.dependencies.thiserror]
  version = "2.0"
  default-features = false
  
  [workspace.dependencies.tikv-jemallocator]
  git = "https://github.com/matrix-construct/jemallocator"
  rev = "03bed96afbbc898bef4d4f7d335c0519e3d1afad"
  default-features = false
  features = [
  	"background_threads_runtime_support",
  	"unprefixed_malloc_on_supported_platforms",
  ]
  
  [workspace.dependencies.tikv-jemalloc-ctl]
  git = "https://github.com/matrix-construct/jemallocator"
  rev = "03bed96afbbc898bef4d4f7d335c0519e3d1afad"
  default-features = false
  features = ["use_std"]
  
  [workspace.dependencies.tikv-jemalloc-sys]
  git = "https://github.com/matrix-construct/jemallocator"
  rev = "03bed96afbbc898bef4d4f7d335c0519e3d1afad"
  default-features = false
  features = [
  	"background_threads_runtime_support",
  	"unprefixed_malloc_on_supported_platforms",
  ]
  
  [workspace.dependencies.tokio]
  version = "1.47"
  default-features = false
  features = [
  	"fs",
  	"net",
  	"macros",
  	"sync",
  	"signal",
  	"time",
  	"rt-multi-thread",
  	"io-util",
  	"tracing",
  ]
  
  [workspace.dependencies.tokio-metrics]
  version = "0.4"
  
  [workspace.dependencies.toml]
  version = "0.9"
  default-features = false
  features = ["parse"]
  
  [workspace.dependencies.tower]
  version = "0.5"
  default-features = false
  features = ["util"]
  
  [workspace.dependencies.tower-http]
  version = "0.6"
  default-features = false
  features = [
      "add-extension",
      "catch-panic",
      "cors",
      "sensitive-headers",
      "set-header",
      "timeout",
      "trace",
      "util",
  ]
  
  [workspace.dependencies.tracing]
  version = "0.1"
  default-features = false
  
  [workspace.dependencies.tracing-core]
  version = "0.1"
  default-features = false
  
  [workspace.dependencies.tracing-flame]
  version = "0.2"
  
  [workspace.dependencies.tracing-opentelemetry]
  version = "0.31"
  
  [workspace.dependencies.tracing-subscriber]
  version = "0.3"
  default-features = false
  features = [
  	"ansi",
  	"env-filter",
  	"fmt",
  	"std",
  	"tracing",
  	"tracing-log",
  ]
  
  [workspace.dependencies.url]
  version = "2.5"
  default-features = false
  features = ["serde"]
  
  [workspace.dependencies.webpage]
  version = "2.0"
  default-features = false
  
  #
  # Patches
  #
  
  # adds a tab completion callback:
  # https://github.com/girlbossceo/rustyline-async/commit/de26100b0db03e419a3d8e1dd26895d170d1fe50
  # adds event for CTRL+\:
  # https://github.com/girlbossceo/rustyline-async/commit/67d8c49aeac03a5ef4e818f663eaa94dd7bf339b
  [patch.crates-io.rustyline-async]
  git = "https://github.com/matrix-construct/rustyline-async"
  rev = "ba743cae940659e95d7b8604bbd6fdd755171c8c"
  
  # adds LIFO queue scheduling; this should be updated with PR progress.
  [patch.crates-io.event-listener]
  git = "https://github.com/matrix-construct/event-listener"
  rev = "fe4aebeeaae435af60087ddd56b573a2e0be671d"
  [patch.crates-io.async-channel]
  git = "https://github.com/matrix-construct/async-channel"
  rev = "92e5e74063bf2a3b10414bcc8a0d68b235644280"
  
  # adds affinity masks for selecting more than one core at a time
  [patch.crates-io.core_affinity]
  git = "https://github.com/matrix-construct/core_affinity_rs"
  rev = "ff148c2985cbaff3e6e953d45cda4d7696f38d75"
  
  # reverts hyperium#148 conflicting with our delicate federation resolver hooks
  [patch.crates-io.hyper-util]
  git = "https://github.com/matrix-construct/hyper-util"
  rev = "c4fd9b4cd3a59fcfd28ca3802d68a8ea8988d9a3"
  
  # allows no-aaaa option in resolv.conf
  # bumps rust edition and toolchain to 1.86.0 and 2024
  # use sat_add on line number errors
  [patch.crates-io.resolv-conf]
  git = "https://github.com/matrix-construct/resolv-conf"
  rev = "200e958941d522a70c5877e3d846f55b5586c68d"
  
  #
  # Our crates
  #
  
  [workspace.dependencies.tuwunel-router]
  package = "tuwunel_router"
  path = "src/router"
  default-features = false
  
  [workspace.dependencies.tuwunel-admin]
  package = "tuwunel_admin"
  path = "src/admin"
  default-features = false
  
  [workspace.dependencies.tuwunel-api]
  package = "tuwunel_api"
  path = "src/api"
  default-features = false
  
  [workspace.dependencies.tuwunel-service]
  package = "tuwunel_service"
  path = "src/service"
  default-features = false
  
  [workspace.dependencies.tuwunel-database]
  package = "tuwunel_database"
  path = "src/database"
  default-features = false
  
  [workspace.dependencies.tuwunel-core]
  package = "tuwunel_core"
  path = "src/core"
  default-features = false
  
  [workspace.dependencies.tuwunel-macros]
  package = "tuwunel_macros"
  path = "src/macros"
  default-features = false
  
  ###############################################################################
  #
  # Release profiles
  #
  
  [profile.release]
  strip = "symbols"
  lto = "thin"
  
  # release profile with debug symbols
  [profile.release-debuginfo]
  inherits = "release"
  debug = "full"
  strip = "none"
  
  # do not use without profile-rustflags enabled. uncomment ALL the sections for
  # profile.release-native
  [profile.release-native]
  inherits = "release"
  strip = "symbols"
  lto = "fat"
  #rustflags = [
  #	'-Ctarget-cpu=native',
  #	'-Ztune-cpu=native',
  #	'-Ctarget-feature=+crt-static',
  #	'-Crelocation-model=static',
  #	'-Ztls-model=local-exec',
  #	'-Zinline-mir=true',
  #	'-Zmir-opt-level=3',
  #	'-Clink-arg=-Wl,--gc-sections',
  #	'-Ztime-passes',
  #	'-Ztime-llvm-passes',
  #]
  
  [profile.release-native.build-override]
  inherits = "release-native"
  opt-level = 0
  codegen-units = 32
  #rustflags = [
  #	'-Crelocation-model=pic',
  #	'-Ctarget-feature=-crt-static',
  #	'-Clink-arg=-Wl,--no-gc-sections',
  #]
  
  [profile.release-native.package.tuwunel_macros]
  inherits = "release-native.build-override"
  #rustflags = [
  #	'-Crelocation-model=pic',
  #	'-Ctarget-feature=-crt-static',
  #]
  
  [profile.bench]
  debug = false
  strip = false
  #rustflags = [
  #	"-Cremark=all",
  #	'-Ztime-passes',
  #	'-Ztime-llvm-passes',
  #]
  
  ###############################################################################
  #
  # Developer profile
  #
  
  # To enable hot-reloading:
  # 1. Uncomment all of the rustflags here.
  # 2. Uncomment crate-type=dylib in src/*/Cargo.toml
  #
  # opt-level, mir-opt-level, validate-mir are not known to interfere with reloading
  # and can be raised if build times are tolerable.
  
  [profile.dev]
  debug = "full"
  #rustflags = [
  #	'--cfg', 'tuwunel_mods',
  #	'-Ztime-passes',
  #	'-Zmir-opt-level=0',
  #	'-Zvalidate-mir=false',
  #	'-Ztls-model=global-dynamic',
  #	'-Cprefer-dynamic=true',
  #	'-Zstaticlib-prefer-dynamic=true',
  #	'-Zstaticlib-allow-rdylib-deps=true',
  #	'-Zpacked-bundled-libs=false',
  #	'-Zplt=true',
  #	'-Crpath=true',
  #	'-Clink-arg=-Wl,--as-needed',
  #	'-Clink-arg=-Wl,--allow-shlib-undefined',
  #	'-Clink-arg=-Wl,-z,keep-text-section-prefix',
  #	'-Clink-arg=-Wl,-z,lazy',
  #]
  
  [profile.dev.package.tuwunel_core]
  inherits = "dev"
  incremental = false
  #rustflags = [
  #	'--cfg', 'tuwunel_mods',
  #	'-Ztime-passes',
  #	'-Zmir-opt-level=0',
  #	'-Ztls-model=initial-exec',
  #	'-Cprefer-dynamic=true',
  #	'-Zstaticlib-prefer-dynamic=true',
  #	'-Zstaticlib-allow-rdylib-deps=true',
  #	'-Zpacked-bundled-libs=false',
  #	'-Zplt=true',
  #	'-Clink-arg=-Wl,--as-needed',
  #	'-Clink-arg=-Wl,--allow-shlib-undefined',
  #	'-Clink-arg=-Wl,-z,lazy',
  #	'-Clink-arg=-Wl,-z,unique',
  #	'-Clink-arg=-Wl,-z,nodlopen',
  #	'-Clink-arg=-Wl,-z,nodelete',
  #]
  
  [profile.dev.package.tuwunel]
  inherits = "dev"
  #rustflags = [
  #	'--cfg', 'tuwunel_mods',
  #	'-Ztime-passes',
  #	'-Zmir-opt-level=0',
  #	'-Zvalidate-mir=false',
  #	'-Ztls-model=global-dynamic',
  #	'-Cprefer-dynamic=true',
  #	'-Zexport-executable-symbols=true',
  #	'-Zplt=true',
  #	'-Crpath=true',
  #	'-Clink-arg=-Wl,--as-needed',
  #	'-Clink-arg=-Wl,--allow-shlib-undefined',
  #	'-Clink-arg=-Wl,--export-dynamic',
  #	'-Clink-arg=-Wl,-z,lazy',
  #]
  
  [profile.dev.package.'*']
  inherits = "dev"
  debug = "limited"
  incremental = false
  codegen-units = 1
  opt-level = 'z'
  #rustflags = [
  #	'--cfg', 'tuwunel_mods',
  #	'-Ztls-model=global-dynamic',
  #	'-Cprefer-dynamic=true',
  #	'-Zstaticlib-prefer-dynamic=true',
  #	'-Zstaticlib-allow-rdylib-deps=true',
  #	'-Zpacked-bundled-libs=true',
  #	'-Zplt=true',
  #	'-Clink-arg=-Wl,--as-needed',
  #	'-Clink-arg=-Wl,-z,lazy',
  #	'-Clink-arg=-Wl,-z,nodelete',
  #]
  
  # primarily used for CI
  [profile.test]
  debug = "limited"
  
  [profile.test.package.'*']
  inherits = "test"
  incremental = false
  codegen-units = 1
  opt-level = 'z'
  
  ###############################################################################
  #
  # Linting
  #
  
  [workspace.lints.rust]
  absolute-paths-not-starting-with-crate = "warn"
  #box-pointers = "warn"
  deprecated-in-future = "warn"
  elided-lifetimes-in-paths = "warn"
  explicit-outlives-requirements = "warn"
  ffi-unwind-calls = "warn"
  keyword-idents = "warn"
  macro-use-extern-crate = "warn"
  meta-variable-misuse = "warn"
  missing-abi = "warn"
  #missing-copy-implementations = "warn"                               # TODO
  #missing-debug-implementations = "warn"                              # TODO
  non-ascii-idents = "warn"
  rust-2021-incompatible-closure-captures = "warn"
  rust-2021-incompatible-or-patterns = "warn"
  rust-2021-prefixes-incompatible-syntax = "warn"
  rust-2021-prelude-collisions = "warn"
  single-use-lifetimes = "warn"
  trivial-casts = "warn"
  trivial-numeric-casts = "warn"
  unit-bindings = "warn"
  #unnameable-types = "warn"                                           # TODO
  unreachable-pub = "warn"
  unsafe-op-in-unsafe-fn = "warn"
  unstable-features = "warn"
  unused-extern-crates = "warn"
  unused-import-braces = "warn"
  unused-lifetimes = "warn"
  unused-macro-rules = "warn"
  unused-qualifications = "warn"
  #unused-results = "warn"                                             # TODO
  
  ## some sadness
  elided_named_lifetimes = "allow"                                     # TODO!
  mismatched_lifetime_syntaxes = "allow"                               # TODO!
  let_underscore_drop = "allow"
  missing_docs = "allow"
  # cfgs cannot be limited to expected cfgs or their de facto non-transitive/opt-in use-case e.g.
  # tokio_unstable will warn.
  unexpected_cfgs = "allow"
  # this seems to suggest broken code and is not working correctly
  unused_braces = "allow"
  # buggy, but worth checking on occasionally
  unused_crate_dependencies = "allow"
  unsafe_code = "allow"
  variant_size_differences = "allow"
  
  # we check nightly clippy lints
  unknown_lints = "allow"
  
  # rust claims elided_named_lifetimes has been replaced by
  # mismatched_lifetime_syntaxes but it actually has not.
  renamed_and_removed_lints = "allow"
  
  # nightly has a new lint that conflicts with our BoolExt trait at
  # src/core/utils/bool.rs:68:48
  # <https://github.com/rust-lang/rust/issues/142748>
  unstable_name_collisions = "allow"                                   # TODO
  
  #######################################
  #
  # Clippy lints
  #
  
  [workspace.lints.clippy]
  
  ###################
  cargo = { level = "warn", priority = -1 }
  
  ## some sadness
  multiple_crate_versions = { level = "allow", priority = 1 }
  
  ###################
  complexity = { level = "warn", priority = -1 }
  
  # promotes forward-compat for literal ..default() construction
  needless_update = { level = "allow", priority = 1 }
  
  ###################
  correctness = { level = "warn", priority = -1 }
  
  ###################
  nursery = { level = "warn", priority = -1 }
  
  ## some sadness
  missing_const_for_fn = { level = "allow", priority = 1 }             # TODO
  option_if_let_else = { level = "allow", priority = 1 }               # TODO
  redundant_pub_crate = { level = "allow", priority = 1 }              # TODO
  significant_drop_in_scrutinee = { level = "allow", priority = 1 }    # TODO
  significant_drop_tightening = { level = "allow", priority = 1 }      # TODO
  tuple_array_conversions = { level = "allow", priority = 1 }
  
  ###################
  pedantic = { level = "warn", priority = -1 }
  
  ## some sadness
  too_long_first_doc_paragraph = { level = "allow", priority = 1 }
  default_trait_access = { level = "allow", priority = 1 }
  doc_markdown = { level = "allow", priority = 1 }
  enum_glob_use = { level = "allow", priority = 1 }
  if_not_else = { level = "allow", priority = 1 }
  if_then_some_else_none = { level = "allow", priority = 1 }
  inline_always = { level = "allow", priority = 1 }
  map_unwrap_or = { level = "allow", priority = 1 }
  match_bool = { level = "allow", priority = 1 }
  match_same_arms = { level = "allow", priority = 1 }
  missing_docs_in_private_items = { level = "allow", priority = 1 }
  missing_errors_doc = { level = "allow", priority = 1 }
  missing_panics_doc = { level = "allow", priority = 1 }
  module_name_repetitions = { level = "allow", priority = 1 }
  needless_continue = { level = "allow", priority = 1 }
  no_effect_underscore_binding = { level = "allow", priority = 1 }
  similar_names = { level = "allow", priority = 1 }
  single_match_else = { level = "allow", priority = 1 }
  struct_excessive_bools = { level = "allow", priority = 1 }
  struct_field_names = { level = "allow", priority = 1 }
  unnecessary_wraps = { level = "allow", priority = 1 }
  unused_async = { level = "allow", priority = 1 }
  
  ###################
  perf = { level = "warn", priority = -1 }
  
  ###################
  #restriction = "warn"
  
  #allow_attributes = "warn"                                           # UNSTABLE
  arithmetic_side_effects = "warn"
  as_conversions = "warn"
  as_underscore = "warn"
  assertions_on_result_states = "warn"
  dbg_macro = "warn"
  default_union_representation = "warn"
  deref_by_slicing = "warn"
  empty_drop = "warn"
  empty_structs_with_brackets = "warn"
  exit = "warn"
  filetype_is_file = "warn"
  float_cmp_const = "warn"
  fn_to_numeric_cast_any = "warn"
  format_push_string = "warn"
  get_unwrap = "warn"
  impl_trait_in_params = "warn"
  let_underscore_untyped = "warn"
  lossy_float_literal = "warn"
  mem_forget = "warn"
  missing_assert_message = "warn"
  mutex_atomic = "warn"
  pub_without_shorthand = "warn"
  rc_buffer = "warn"
  rc_mutex = "warn"
  redundant_type_annotations = "warn"
  semicolon_outside_block = "warn"
  str_to_string = "warn"
  string_lit_chars_any = "warn"
  string_slice = "warn"
  implicit_clone = "warn"
  suspicious_xor_used_as_pow = "warn"
  tests_outside_test_module = "warn"
  try_err = "warn"
  undocumented_unsafe_blocks = "warn"
  unnecessary_safety_comment = "warn"
  unnecessary_safety_doc = "warn"
  unnecessary_self_imports = "warn"
  unneeded_field_pattern = "warn"
  unseparated_literal_suffix = "warn"
  #unwrap_used = "warn"                                                # TODO
  verbose_file_reads = "warn"
  
  ###################
  style = { level = "warn", priority = -1 }
  
  ## some sadness
  # trivial assertions are quite alright
  assertions_on_constants = { level = "allow", priority = 1 }
  module_inception = { level = "allow", priority = 1 }
  obfuscated_if_else = { level = "allow", priority = 1 }
  collapsible_if = { level = "allow", priority = 1 }                   # TODO stable v. nightly 05-21-25
  
  ###################
  suspicious = { level = "warn", priority = -1 }
  
  ## some sadness
  let_underscore_future = { level = "allow", priority = 1 }
  
  # rust doesnt understand tuwunel's custom log macros
  literal_string_with_formatting_args = { level = "allow", priority = 1 }
  