[workspace] resolver = "3" members = ["crates/*"] [workspace.package] edition = "2024" rust-version = "1.85" license-file = "LICENSE.md" publish = false [workspace.dependencies] lint-policy = { path = "crates/lint-policy", version = "=0.0.1", default-features = false } anyhow = { version = "^1.0.14", default-features = false } clap = { version = "^4.5.61", default-features = false } itertools = { version = "^0.15.0", default-features = false } serde = { version = "^1.0.225", default-features = false } strum = { version = "^0.28.0", default-features = false } thiserror = { version = "^2.0.0", default-features = false } toml = { version = "^1.0.7", default-features = false } [workspace.lints.clippy] cargo = { level = "warn", priority = -1 } complexity = { level = "warn", priority = -1 } correctness = { level = "deny", priority = -1 } perf = { level = "warn", priority = -1 } style = { level = "warn", priority = -1 } suspicious = { level = "warn", priority = -1 } absolute-paths = "allow" alloc-instead-of-core = "warn" allow-attributes = "warn" allow-attributes-without-reason = "deny" arbitrary-source-item-ordering = "allow" arithmetic-side-effects = "deny" as-conversions = "deny" as-pointer-underscore = "deny" as-ptr-cast-mut = "deny" as-underscore = "deny" assertions-on-result-states = "warn" assigning-clones = "warn" big-endian-bytes = "allow" bool-to-int-with-if = "warn" borrow-as-ptr = "warn" branches-sharing-code = "warn" case-sensitive-file-extension-comparisons = "warn" cast-lossless = "deny" cast-possible-truncation = "deny" cast-possible-wrap = "deny" cast-precision-loss = "deny" cast-ptr-alignment = "deny" cast-sign-loss = "deny" cfg-not-test = "deny" checked-conversions = "deny" clear-with-drain = "warn" clone-on-ref-ptr = "warn" cloned-instead-of-copied = "warn" coerce-container-to-any = "warn" cognitive-complexity = "allow" collapsible-else-if = "warn" collection-is-never-read = "warn" comparison-chain = "warn" copy-iterator = "warn" create-dir = "warn" dbg-macro = "warn" debug-assert-with-mut-call = "deny" decimal-bitwise-operands = "warn" decimal-literal-representation = "warn" default-numeric-fallback = "warn" default-trait-access = "warn" default-union-representation = "allow" deref-by-slicing = "warn" derive-partial-eq-without-eq = "warn" disallowed-script-idents = "deny" doc-broken-link = "warn" doc-comment-double-space-linebreaks = "warn" doc-include-without-cfg = "warn" doc-link-code = "warn" doc-link-with-quotes = "warn" doc-markdown = "warn" doc-paragraphs-missing-punctuation = "warn" duration-suboptimal-units = "warn" elidable-lifetime-names = "warn" else-if-without-else = "warn" empty-drop = "warn" empty-enum-variants-with-brackets = "warn" empty-enums = "warn" empty-structs-with-brackets = "warn" enum-glob-use = "warn" equatable-if-let = "warn" error-impl-error = "warn" exhaustive-enums = "warn" exhaustive-structs = "warn" exit = "warn" expect-used = "warn" expl-impl-clone-on-copy = "warn" explicit-deref-methods = "warn" explicit-into-iter-loop = "warn" explicit-iter-loop = "warn" fallible-impl-from = "warn" field-scoped-visibility-modifiers = "warn" filetype-is-file = "warn" filter-map-next = "warn" flat-map-option = "warn" float-arithmetic = "warn" float-cmp = "warn" float-cmp-const = "warn" fn-params-excessive-bools = "allow" fn-to-numeric-cast-any = "warn" format-collect = "warn" format-push-string = "warn" from-iter-instead-of-collect = "warn" future-not-send = "warn" get-unwrap = "warn" host-endian-bytes = "allow" if-not-else = "warn" if-then-some-else-none = "warn" ignore-without-reason = "warn" ignored-unit-patterns = "warn" impl-trait-in-params = "warn" implicit-clone = "warn" implicit-hasher = "warn" implicit-return = "allow" imprecise-flops = "warn" inconsistent-struct-constructor = "warn" index-refutable-slice = "deny" indexing-slicing = "deny" inefficient-to-string = "warn" infinite-loop = "warn" inline-always = "warn" inline-asm-x86-att-syntax = "warn" inline-asm-x86-intel-syntax = "warn" inline-modules = "allow" inline-trait-bounds = "allow" integer-division = "deny" integer-division-remainder-used = "deny" into-iter-without-iter = "warn" invalid-upcast-comparisons = "warn" ip-constant = "warn" items-after-statements = "warn" iter-filter-is-ok = "warn" iter-filter-is-some = "warn" iter-not-returning-iterator = "warn" iter-on-empty-collections = "warn" iter-on-single-items = "warn" iter-over-hash-type = "warn" iter-with-drain = "warn" iter-without-into-iter = "warn" large-digit-groups = "warn" large-futures = "warn" large-include-file = "warn" large-stack-arrays = "warn" large-stack-frames = "warn" large-types-passed-by-value = "warn" let-underscore-must-use = "warn" let-underscore-untyped = "warn" linkedlist = "warn" literal-string-with-formatting-args = "warn" little-endian-bytes = "allow" lossy-float-literal = "warn" macro-use-imports = "warn" manual-assert = "warn" manual-assert-eq = "warn" manual-ilog2 = "warn" manual-instant-elapsed = "warn" manual-is-power-of-two = "warn" manual-is-variant-and = "warn" manual-let-else = "warn" manual-midpoint = "warn" manual-string-new = "warn" many-single-char-names = "warn" map-err-ignore = "warn" map-unwrap-or = "warn" map-with-unused-argument-over-ranges = "warn" match-bool = "warn" match-same-arms = "warn" match-wild-err-arm = "warn" match-wildcard-for-single-variants = "warn" maybe-infinite-iter = "warn" mem-forget = "warn" min-ident-chars = "allow" mismatching-type-param-order = "warn" missing-assert-message = "warn" missing-asserts-for-indexing = "warn" missing-const-for-fn = "warn" missing-docs-in-private-items = "warn" missing-errors-doc = "warn" missing-fields-in-debug = "warn" missing-inline-in-public-items = "warn" missing-panics-doc = "warn" missing-trait-methods = "warn" mixed-read-write-in-expression = "warn" mod-module-files = "allow" module-name-repetitions = "warn" modulo-arithmetic = "warn" multiple-inherent-impl = "warn" multiple-unsafe-ops-per-block = "warn" must-use-candidate = "warn" mut-mut = "warn" mutex-atomic = "warn" mutex-integer = "warn" naive-bytecount = "warn" needless-bitwise-bool = "warn" needless-collect = "warn" needless-continue = "warn" needless-for-each = "warn" needless-pass-by-ref-mut = "warn" needless-pass-by-value = "warn" needless-raw-string-hashes = "warn" needless-raw-strings = "warn" needless-type-cast = "warn" no-effect-underscore-binding = "warn" no-mangle-with-rust-abi = "warn" non-ascii-literal = "allow" non-send-fields-in-send-ty = "warn" non-std-lazy-statics = "warn" non-zero-suggestions = "warn" nonminimal-bool = "warn" nonstandard-macro-braces = "warn" option-as-ref-cloned = "warn" option-if-let-else = "warn" option-option = "warn" or-fun-call = "warn" overly-complex-bool-expr = "allow" panic = "warn" panic-in-result-fn = "warn" partial-pub-fields = "warn" path-buf-push-overwrite = "warn" pathbuf-init-then-push = "warn" pattern-type-mismatch = "allow" pointer-format = "warn" precedence-bits = "warn" print-stderr = "warn" print-stdout = "warn" ptr-as-ptr = "warn" ptr-cast-constness = "warn" ptr-offset-by-literal = "warn" pub-underscore-fields = "warn" pub-use = "allow" pub-with-shorthand = "allow" pub-without-shorthand = "warn" question-mark-used = "allow" range-minus-one = "warn" range-plus-one = "warn" rc-buffer = "warn" rc-mutex = "warn" read-zero-byte-vec = "warn" redundant-clone = "warn" redundant-closure-for-method-calls = "warn" redundant-else = "warn" redundant-pub-crate = "allow" redundant-test-prefix = "warn" redundant-type-annotations = "warn" ref-as-ptr = "warn" ref-binding-to-reference = "warn" ref-option = "warn" ref-option-ref = "warn" ref-patterns = "warn" renamed-function-params = "warn" rest-pat-in-fully-bound-structs = "warn" return-and-then = "warn" return-self-not-must-use = "warn" same-functions-in-if-condition = "warn" same-length-and-capacity = "warn" same-name-method = "warn" search-is-some = "warn" self-named-module-files = "warn" self-only-used-in-recursion = "warn" semicolon-if-nothing-returned = "warn" semicolon-inside-block = "warn" semicolon-outside-block = "allow" separated-literal-suffix = "allow" set-contains-or-insert = "warn" shadow-reuse = "allow" shadow-same = "allow" shadow-unrelated = "allow" should-panic-without-expect = "warn" significant-drop-in-scrutinee = "warn" significant-drop-tightening = "warn" similar-names = "allow" single-call-fn = "allow" single-char-lifetime-names = "allow" single-char-pattern = "allow" single-match-else = "warn" single-option-map = "warn" stable-sort-primitive = "warn" std-instead-of-alloc = "warn" std-instead-of-core = "warn" str-split-at-newline = "warn" str-to-string = "warn" string-add = "warn" string-add-assign = "warn" string-lit-as-bytes = "warn" string-lit-chars-any = "warn" string-slice = "warn" struct-excessive-bools = "allow" struct-field-names = "warn" suboptimal-flops = "warn" suspicious-operation-groupings = "warn" suspicious-xor-used-as-pow = "warn" tests-outside-test-module = "warn" todo = "warn" too-long-first-doc-paragraph = "allow" too-many-lines = "allow" trailing-empty-array = "warn" trait-duplication-in-bounds = "warn" transmute-ptr-to-ptr = "warn" transmute-undefined-repr = "warn" trivial-regex = "warn" trivially-copy-pass-by-ref = "warn" try-err = "warn" tuple-array-conversions = "warn" type-repetition-in-bounds = "warn" unchecked-time-subtraction = "deny" undocumented-unsafe-blocks = "deny" unicode-not-nfc = "warn" unimplemented = "warn" uninhabited-references = "warn" uninlined-format-args = "warn" unnecessary-box-returns = "warn" unnecessary-debug-formatting = "warn" unnecessary-join = "warn" unnecessary-literal-bound = "warn" unnecessary-safety-comment = "warn" unnecessary-safety-doc = "warn" unnecessary-self-imports = "warn" unnecessary-semicolon = "warn" unnecessary-struct-initialization = "warn" unnecessary-trailing-comma = "warn" unnecessary-wraps = "warn" unneeded-field-pattern = "warn" unnested-or-patterns = "warn" unreachable = "warn" unreadable-literal = "warn" unsafe-derive-deserialize = "warn" unseparated-literal-suffix = "warn" unused-async = "warn" unused-peekable = "warn" unused-result-ok = "warn" unused-rounding = "warn" unused-self = "warn" unused-trait-names = "warn" unwrap-in-result = "warn" unwrap-used = "warn" use-debug = "warn" use-self = "warn" used-underscore-binding = "warn" used-underscore-items = "warn" useless-let-if-seq = "warn" verbose-bit-mask = "warn" verbose-file-reads = "warn" volatile-composites = "warn" while-float = "warn" wildcard-enum-match-arm = "warn" wildcard-imports = "warn" zero-sized-map-values = "warn" [workspace.lints.rust] deprecated-safe = "forbid" future-incompatible = "deny" keyword-idents = "deny" let-underscore = "warn" nonstandard-style = "warn" refining-impl-trait = "warn" rust-2018-compatibility = "deny" rust-2018-idioms = "deny" rust-2021-compatibility = "deny" rust-2024-compatibility = "deny" unknown-or-malformed-diagnostic-attributes = "deny" unused = { level = "warn", priority = -1 } ambiguous-glob-reexports = "warn" ambiguous-negative-literals = "deny" ambiguous-wide-pointer-comparisons = "warn" arithmetic-overflow = "deny" asm-sub-register = "warn" async-fn-in-trait = "warn" bad-asm-style = "warn" binary-asm-labels = "deny" bindings-with-variant-name = "deny" break-with-label-and-loop = "warn" clashing-extern-declarations = "warn" closure-returning-async-block = "warn" confusable-idents = "warn" const-item-interior-mutations = "warn" const-item-mutation = "warn" dangerous-implicit-autorefs = "deny" dangling-pointers-from-locals = "warn" dangling-pointers-from-temporaries = "warn" dead-code-pub-in-binary = "warn" deprecated = "warn" deprecated-in-future = "allow" deprecated-where-clause-location = "warn" deref-into-dyn-supertrait = "warn" deref-nullptr = "deny" double-negations = "warn" drop-bounds = "warn" dropping-copy-types = "warn" dropping-references = "warn" duplicate-features = "deny" duplicate-macro-attributes = "warn" dyn-drop = "warn" enum-intrinsics-non-enums = "deny" explicit-builtin-cfgs-in-flags = "deny" exported-private-dependencies = "warn" ffi-unwind-calls = "warn" for-loops-over-fallibles = "warn" forgetting-copy-types = "warn" forgetting-references = "warn" function-casts-as-integer = "warn" function-item-references = "warn" hidden-glob-reexports = "warn" impl-trait-redundant-captures = "warn" improper-ctypes = "warn" improper-ctypes-definitions = "warn" improper-gpu-kernel-arg = "warn" incomplete-features = "warn" incomplete-include = "deny" ineffective-unstable-trait-impl = "deny" inline-no-sanitize = "warn" integer-to-ptr-transmutes = "warn" internal-features = "warn" invalid-atomic-ordering = "deny" invalid-doc-attributes = "warn" invalid-from-utf8 = "warn" invalid-from-utf8-unchecked = "deny" invalid-nan-comparisons = "warn" invalid-null-arguments = "deny" invalid-reference-casting = "deny" invalid-value = "warn" irrefutable-let-patterns = "warn" large-assignments = "warn" linker-info = "allow" linker-messages = "warn" long-running-const-eval = "deny" macro-use-extern-crate = "warn" meta-variable-misuse = "warn" mismatched-lifetime-syntaxes = "warn" missing-abi = "warn" missing-copy-implementations = "warn" missing-debug-implementations = "warn" missing-docs = "warn" missing-gpu-kernel-export-name = "warn" mixed-script-confusables = "warn" mutable-transmutes = "deny" named-arguments-used-positionally = "warn" named-asm-labels = "deny" no-mangle-const-items = "deny" no-mangle-generic-items = "warn" non-ascii-idents = "deny" non-contiguous-range-endpoints = "warn" non-local-definitions = "warn" non-shorthand-field-patterns = "warn" noop-method-call = "warn" opaque-hidden-inferred-bound = "warn" overflowing-literals = "deny" overlapping-range-endpoints = "warn" private-bounds = "warn" private-interfaces = "warn" ptr-to-integer-transmute-in-consts = "warn" redundant-imports = "warn" redundant-lifetimes = "warn" renamed-and-removed-lints = "warn" rtsan-nonblocking-async = "warn" single-use-lifetimes = "warn" special-module-name = "warn" stable-features = "warn" suspicious-double-ref-op = "warn" text-direction-codepoint-in-comment = "deny" text-direction-codepoint-in-literal = "deny" trivial-bounds = "warn" trivial-casts = "warn" trivial-numeric-casts = "warn" type-alias-bounds = "warn" uncommon-codepoints = "warn" unconditional-panic = "deny" unconditional-recursion = "warn" undropped-manually-drops = "deny" unexpected-cfgs = "warn" unfulfilled-lint-expectations = "warn" ungated-async-fn-track-caller = "warn" unit-bindings = "warn" unknown-crate-types = "deny" unknown-lints = "warn" unnameable-test-items = "warn" unnameable-types = "warn" unnecessary-transmutes = "warn" unpredictable-function-pointer-comparisons = "warn" unreachable-cfg-select-predicates = "warn" unreachable-pub = "warn" unsafe-code = "forbid" unstable-features = "forbid" unused-associated-type-bounds = "warn" unused-comparisons = "warn" unused-crate-dependencies = "warn" unused-import-braces = "warn" unused-lifetimes = "warn" unused-qualifications = "warn" unused-results = "warn" useless-deprecated = "deny" useless-ptr-null-checks = "warn" uses-power-alignment = "warn" variant-size-differences = "warn" warnings = "warn" while-true = "warn" # unstable lints # default-overrides-default-fields = "deny" # deprecated-llvm-intrinsic = "warn" # fuzzy-provenance-casts = "deny" # lossy-provenance-casts = "deny" # multiple-supertrait-upcastable = "warn" # must-not-suspend = "warn" # non-exhaustive-omitted-patterns = "warn" # resolving-to-items-shadowing-supertrait-items = "warn" # shadowing-supertrait-items = "warn" # tail-call-track-caller = "warn" # test-unstable-lint = "deny" # unqualified-local-imports = "deny" [workspace.lints.rustdoc] bare-urls = "warn" broken-intra-doc-links = "warn" invalid-codeblock-attributes = "warn" invalid-html-tags = "warn" invalid-rust-codeblocks = "warn" missing-crate-level-docs = "warn" private-doc-tests = "warn" private-intra-doc-links = "warn" redundant-explicit-links = "warn" unescaped-backticks = "warn" # unstable lints # missing-doc-code-examples = "warn" [profile.release] opt-level = 3 strip = "debuginfo" overflow-checks = true lto = "fat" codegen-units = 1