Skip to content
Snippets Groups Projects
config.toml 6.52 KiB
[build]
rustflags = [
    # === ENABLE ALL LINTS ===

    "-Wclippy::complexity",
    "-Wclippy::correctness",
    "-Wclippy::nursery",
    "-Wclippy::pedantic",
    "-Wclippy::perf",
    "-Wclippy::restriction",
    "-Wclippy::style",
    "-Wclippy::suspicious",

    # === REASONABLE LINTS ===

    # Rust warnings
    "-Adead_code",
    "-Adeprecated",
    "-Aunused_imports",
    "-Aunused_mut",
    "-Aunused_variables",

    # clippy::complexity
    "-Aclippy::useless_format",

    # clippy::correctness
    "-Aclippy::unused_io_amount",

    # clippy::nursery
    "-Aclippy::empty_line_after_doc_comments",
    "-Aclippy::option_if_let_else",
    "-Aclippy::string_lit_as_bytes",

    # clippy::pedantic
    "-Aclippy::bool_to_int_with_if",
    "-Aclippy::cast_lossless",
    "-Aclippy::cloned_instead_of_copied",
    "-Aclippy::default_trait_access",
    "-Aclippy::doc_markdown",
    "-Aclippy::expl_impl_clone_on_copy",
    "-Aclippy::flat_map_option",
    "-Aclippy::from_iter_instead_of_collect",
    "-Aclippy::if_not_else",
    "-Aclippy::inefficient_to_string",
    "-Aclippy::items_after_statements",
    "-Aclippy::manual_let_else",
    "-Aclippy::manual_string_new",
    "-Aclippy::map_unwrap_or",
    "-Aclippy::match_same_arms",
    "-Aclippy::must_use_candidate",
    "-Aclippy::needless_continue",
    "-Aclippy::needless_pass_by_value",
    "-Aclippy::redundant_closure_for_method_calls",
    "-Aclippy::return-self-not-must-use",
    "-Aclippy::ref_binding_to_reference",
    "-Aclippy::semicolon_if_nothing_returned",
    "-Aclippy::trivially_copy_pass_by_ref",
    "-Aclippy::unnecessary_wraps",
    "-Aclippy::unused_self",

    # clippy::perf
    "-Aclippy::map_entry",
    "-Aclippy::single_char_pattern",
    "-Aclippy::to_string_in_format_args",

    # clippy::restriction
    "-Aclippy::create_dir",
    "-Aclippy::empty_structs_with_brackets",
    "-Aclippy::get_unwrap",
    "-Aclippy::if_then_some_else_none",
    "-Aclippy::impl_trait_in_params",
    "-Aclippy::mod_module_files",
    "-Aclippy::non_ascii_literal",
    "-Aclippy::panic_in_result_fn",
    "-Aclippy::partial_pub_fields",
    "-Aclippy::pub_use",
    "-Aclippy::pub_with_shorthand",
    "-Aclippy::redundant_type_annotations",
    "-Aclippy::ref_patterns",
    "-Aclippy::semicolon_inside_block",
    "-Aclippy::str_to_string",
    "-Aclippy::string_to_string",
    "-Aclippy::tests_outside_test_module",
    "-Aclippy::unneeded_field_pattern",
    "-Aclippy::unwrap_in_result",

    # clippy::style
    "-Aclippy::collapsible_else_if",
    "-Aclippy::collapsible_if",
    "-Aclippy::collapsible_match",
    "-Aclippy::explicit_into_iter_loop",
    "-Aclippy::explicit_iter_loop",
    "-Aclippy::from_over_into",
    "-Aclippy::if_same_then_else",
    "-Aclippy::inherent_to_string",
    "-Aclippy::into_iter_on_ref",
    "-Aclippy::len_zero",
    "-Aclippy::let_and_return",
    "-Aclippy::manual_map",
    "-Aclippy::manual_while_let_some",
    "-Aclippy::map_clone",
    "-Aclippy::match_like_matches_macro",
    "-Aclippy::needless_borrow",
    "-Aclippy::needless_late_init",
    "-Aclippy::needless_return",
    "-Aclippy::new_without_default",
    "-Aclippy::op_ref",
    "-Aclippy::redundant_closure",
    "-Aclippy::redundant_field_names",
    "-Aclippy::redundant_pattern_matching",
    "-Aclippy::redundant_static_lifetimes",
    "-Aclippy::single_char_add_str",
    "-Aclippy::single_component_path_imports",
    "-Aclippy::single_match",
    "-Aclippy::toplevel_ref_arg",
    "-Aclippy::unused_unit",
    "-Aclippy::unwrap_or_default",
    "-Aclippy::write_with_newline",

    # clippy::suspicious
    "-Aclippy::non_canonical_partial_ord_impl",
    "-Aclippy::suspicious_doc_comments",

    # === REQUIRE DISCUSSION ===

    # clippy::pedantic
    "-Aclippy::cast_possible_truncation",
    "-Aclippy::enum_glob_use",
    "-Aclippy::manual_assert",
    "-Aclippy::missing_errors_doc",
    "-Aclippy::missing_panics_doc",
    "-Aclippy::module_name_repetitions",
    "-Aclippy::redundant_else",
    "-Aclippy::single_match_else",
    "-Aclippy::uninlined_format_args",
    "-Aclippy::wildcard_imports",

    # clippy::restriction
    "-Aclippy::absolute_paths",
    "-Aclippy::arithmetic_side_effects",
    "-Aclippy::as_conversions",
    "-Aclippy::clone_on_ref_ptr",
    "-Aclippy::exit",
    "-Aclippy::expect_used",
    "-Aclippy::indexing_slicing",
    "-Aclippy::missing_assert_message",
    "-Aclippy::missing_asserts_for_indexing",
    "-Aclippy::missing_docs_in_private_items",
    "-Aclippy::panic",
    "-Aclippy::pattern_type_mismatch",
    "-Aclippy::print_stderr",
    "-Aclippy::print_stdout",
    "-Aclippy::string_slice",
    "-Aclippy::undocumented_unsafe_blocks",
    "-Aclippy::unimplemented",
    "-Aclippy::unnecessary_safety_comment",
    "-Aclippy::unwrap_used",
    "-Aclippy::use_debug",

    # clippy::style
    "-Aclippy::enum_variant_names",

    # === AVOIDABLE LINTS ===

    # clippy::complexity
    "-Aclippy::too_many_arguments",
    "-Aclippy::type_complexity",

    # clippy::nursery
    "-Aclippy::cognitive_complexity",

    # clippy::pedantic
    "-Aclippy::implicit_hasher",
    "-Aclippy::many_single_char_names",
    "-Aclippy::match_wildcard_for_single_variants",
    "-Aclippy::too_many_lines",

    # clippy::restriction
    "-Aclippy::default_numeric_fallback",
    "-Aclippy::else_if_without_else",
    "-Aclippy::exhaustive_enums",
    "-Aclippy::exhaustive_structs",
    "-Aclippy::implicit_return",
    "-Aclippy::integer_division",
    "-Aclippy::min_ident_chars",
    "-Aclippy::missing_inline_in_public_items",
    "-Aclippy::missing_trait_methods",
    "-Aclippy::pub_with_shorthand", # ("pub_without_shortand" is allowed)
    "-Aclippy::question_mark_used",
    "-Aclippy::self_named_module_files", # ("mod_module_files" is allowed)
    "-Aclippy::semicolon_outside_block", # ("semicolon_outside_block" is allowed)
    "-Aclippy::shadow_reuse",
    "-Aclippy::shadow_same",
    "-Aclippy::shadow_unrelated",
    "-Aclippy::similar_names",
    "-Aclippy::single_call_fn",
    "-Aclippy::single_char_lifetime_names",
    "-Aclippy::std_instead_of_alloc",
    "-Aclippy::std_instead_of_core",
    "-Aclippy::unreachable",
    "-Aclippy::wildcard_enum_match_arm",

    # clippy::style
    "-Aclippy::just_underscores_and_digits",
    "-Aclippy::upper-case-acronyms",

    # === SPECIFIC LINTS ===

    # `clippy::restriction` is enabled globally, but used carefully.
    "-Aclippy::blanket_clippy_restriction_lints",

    # These lints could be false positives, and should be caught by other lints.
    "-Aclippy::ignored_unit_patterns",
    "-Aclippy::let_underscore_untyped",
    "-Aclippy::let_unit_value",
]