# https://github.com/ericseppanen/cargo-cranky
# cargo install cargo-cranky && cargo cranky

deny = ["unsafe_code"]

warn = [
  "clippy::all",
  "clippy::await_holding_lock",
  "clippy::bool_to_int_with_if",
  "clippy::char_lit_as_u8",
  "clippy::checked_conversions",
  "clippy::cloned_instead_of_copied",
  "clippy::dbg_macro",
  "clippy::debug_assert_with_mut_call",
  "clippy::derive_partial_eq_without_eq",
  "clippy::disallowed_methods",
  "clippy::disallowed_script_idents",
  "clippy::doc_link_with_quotes",
  "clippy::doc_markdown",
  "clippy::empty_enum",
  "clippy::enum_glob_use",
  "clippy::equatable_if_let",
  "clippy::exit",
  "clippy::expl_impl_clone_on_copy",
  "clippy::explicit_deref_methods",
  "clippy::explicit_into_iter_loop",
  "clippy::explicit_iter_loop",
  "clippy::fallible_impl_from",
  "clippy::filter_map_next",
  "clippy::flat_map_option",
  "clippy::float_cmp_const",
  "clippy::fn_params_excessive_bools",
  "clippy::fn_to_numeric_cast_any",
  "clippy::from_iter_instead_of_collect",
  "clippy::if_let_mutex",
  "clippy::implicit_clone",
  "clippy::imprecise_flops",
  "clippy::index_refutable_slice",
  "clippy::inefficient_to_string",
  "clippy::invalid_upcast_comparisons",
  "clippy::iter_not_returning_iterator",
  "clippy::iter_on_empty_collections",
  "clippy::iter_on_single_items",
  "clippy::large_digit_groups",
  "clippy::large_stack_arrays",
  "clippy::large_types_passed_by_value",
  "clippy::let_unit_value",
  "clippy::linkedlist",
  "clippy::lossy_float_literal",
  "clippy::macro_use_imports",
  "clippy::manual_assert",
  "clippy::manual_instant_elapsed",
  "clippy::manual_ok_or",
  "clippy::manual_string_new",
  "clippy::map_err_ignore",
  "clippy::map_flatten",
  "clippy::map_unwrap_or",
  "clippy::match_on_vec_items",
  "clippy::match_same_arms",
  "clippy::match_wild_err_arm",
  "clippy::match_wildcard_for_single_variants",
  "clippy::mem_forget",
  "clippy::mismatched_target_os",
  "clippy::mismatching_type_param_order",
  "clippy::missing_enforced_import_renames",
  "clippy::missing_errors_doc",
  "clippy::missing_safety_doc",
  "clippy::mut_mut",
  "clippy::mutex_integer",
  "clippy::needless_borrow",
  "clippy::needless_continue",
  "clippy::needless_for_each",
  "clippy::needless_pass_by_value",
  "clippy::negative_feature_names",
  "clippy::nonstandard_macro_braces",
  "clippy::option_option",
  "clippy::path_buf_push_overwrite",
  "clippy::ptr_as_ptr",
  "clippy::rc_mutex",
  "clippy::ref_option_ref",
  "clippy::rest_pat_in_fully_bound_structs",
  "clippy::same_functions_in_if_condition",
  "clippy::semicolon_if_nothing_returned",
  "clippy::single_match_else",
  "clippy::str_to_string",
  "clippy::string_add_assign",
  "clippy::string_add",
  "clippy::string_lit_as_bytes",
  "clippy::string_to_string",
  "clippy::todo",
  "clippy::trailing_empty_array",
  "clippy::trait_duplication_in_bounds",
  "clippy::unimplemented",
  "clippy::unnecessary_wraps",
  "clippy::unnested_or_patterns",
  "clippy::unused_peekable",
  "clippy::unused_rounding",
  "clippy::unused_self",
  "clippy::useless_transmute",
  "clippy::verbose_file_reads",
  "clippy::zero_sized_map_values",
  "elided_lifetimes_in_paths",
  "future_incompatible",
  "nonstandard_style",
  "rust_2018_idioms",
  "rust_2021_prelude_collisions",
  "rustdoc::missing_crate_level_docs",
  "semicolon_in_expressions_from_macros",
  "trivial_numeric_casts",
  "unused_extern_crates",
  "unused_import_braces",
  "unused_lifetimes",
]

allow = [
  "clippy::manual_range_contains", # This one is just annoying

  # Some of these we should try to put in "warn":
  "clippy::type_complexity",
  "clippy::undocumented_unsafe_blocks",
  "trivial_casts",
  "unsafe_op_in_unsafe_fn",             # `unsafe_op_in_unsafe_fn` may become the default in future Rust versions: https://github.com/rust-lang/rust/issues/71668
  "unused_qualifications",
]
