primitives: migrate to workspace lint rules
What changed, and why it matters
This commit is a routine code-maintenance change. It moves lint (style and warning) rules from an individual package configuration file into shared workspace-level rules, and swaps one allowed style warning for another. There is no change to program logic, no bug fix, and no security relevance.
No action required. This is a non-security refactoring change.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch migrates the primitives crate’s Clippy lint configuration from an inline [lints.clippy] table in primitives/Cargo.toml to [lints] workspace = true, meaning lints are now inherited from the workspace root. It also updates primitives/src/lib.rs to replace a package-specific allow(clippy::uninlined_format_args) with allow(clippy::missing_errors_doc). No source code behavior is altered.
Changed components
primitives/Cargo.tomlprimitives/src/lib.rsInspect captured patch +4 / −130
diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml
index 0b280bbd..0cd7da93 100644
--- a/primitives/Cargo.toml
+++ b/primitives/Cargo.toml
@@ -41,131 +41,5 @@ hex_lit = "0.1.1"
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
-[lints.clippy]
-# Exclude lints we don't think are valuable.
-needless_question_mark = "allow" # https://github.com/rust-bitcoin/rust-bitcoin/pull/2134
-manual_range_contains = "allow" # More readable than clippy's format.
-# Exhaustive list of pedantic clippy lints
-assigning_clones = "warn"
-bool_to_int_with_if = "warn"
-borrow_as_ptr = "warn"
-case_sensitive_file_extension_comparisons = "warn"
-cast_lossless = "warn"
-cast_possible_truncation = "allow" # All casts should include a code comment (except test code).
-cast_possible_wrap = "allow" # Same as above re code comment.
-cast_precision_loss = "warn"
-cast_ptr_alignment = "warn"
-cast_sign_loss = "allow" # All casts should include a code comment (except in test code).
-checked_conversions = "warn"
-cloned_instead_of_copied = "warn"
-copy_iterator = "warn"
-default_trait_access = "warn"
-doc_link_with_quotes = "warn"
-doc_markdown = "warn"
-empty_enum = "warn"
-enum_glob_use = "warn"
-expl_impl_clone_on_copy = "warn"
-explicit_deref_methods = "warn"
-explicit_into_iter_loop = "warn"
-explicit_iter_loop = "warn"
-filter_map_next = "warn"
-flat_map_option = "warn"
-float_cmp = "allow" # Bitcoin floats are typically limited to 8 decimal places and we want them exact.
-fn_params_excessive_bools = "warn"
-from_iter_instead_of_collect = "warn"
-if_not_else = "warn"
-ignored_unit_patterns = "warn"
-implicit_clone = "warn"
-implicit_hasher = "warn"
-inconsistent_struct_constructor = "warn"
-index_refutable_slice = "warn"
-inefficient_to_string = "warn"
-inline_always = "warn"
-into_iter_without_iter = "warn"
-invalid_upcast_comparisons = "warn"
-items_after_statements = "warn"
-iter_filter_is_ok = "warn"
-iter_filter_is_some = "warn"
-iter_not_returning_iterator = "warn"
-iter_without_into_iter = "warn"
-large_digit_groups = "warn"
-large_futures = "warn"
-large_stack_arrays = "warn"
-large_types_passed_by_value = "warn"
-linkedlist = "warn"
-macro_use_imports = "warn"
-manual_assert = "warn"
-manual_instant_elapsed = "warn"
-manual_is_power_of_two = "warn"
-manual_is_variant_and = "warn"
-manual_let_else = "warn"
-manual_ok_or = "warn"
-manual_string_new = "warn"
-many_single_char_names = "warn"
-map_unwrap_or = "warn"
-match_bool = "allow" # Adds extra indentation and LOC.
-match_same_arms = "allow" # Collapses things that are conceptually unrelated to each other.
-match_wild_err_arm = "warn"
-match_wildcard_for_single_variants = "warn"
-maybe_infinite_iter = "warn"
-mismatching_type_param_order = "warn"
-missing_errors_doc = "allow" # TODO: Write errors section in docs.
-missing_fields_in_debug = "warn"
-missing_panics_doc = "warn"
-must_use_candidate = "allow" # Useful for audit but many false positives.
-mut_mut = "warn"
-naive_bytecount = "warn"
-needless_bitwise_bool = "warn"
-needless_continue = "warn"
-needless_for_each = "warn"
-needless_pass_by_value = "warn"
-needless_raw_string_hashes = "warn"
-no_effect_underscore_binding = "warn"
-no_mangle_with_rust_abi = "warn"
-option_as_ref_cloned = "warn"
-option_option = "warn"
-ptr_as_ptr = "warn"
-ptr_cast_constness = "warn"
-pub_underscore_fields = "warn"
-range_minus_one = "warn"
-range_plus_one = "warn"
-redundant_clone = "warn"
-redundant_closure_for_method_calls = "warn"
-redundant_else = "warn"
-ref_as_ptr = "warn"
-ref_binding_to_reference = "warn"
-ref_option = "warn"
-ref_option_ref = "warn"
-return_self_not_must_use = "warn"
-same_functions_in_if_condition = "warn"
-semicolon_if_nothing_returned = "warn"
-should_panic_without_expect = "warn"
-similar_names = "allow" # Too many (subjectively) false positives.
-single_char_pattern = "warn"
-single_match_else = "warn"
-stable_sort_primitive = "warn"
-str_split_at_newline = "warn"
-string_add_assign = "warn"
-struct_excessive_bools = "warn"
-struct_field_names = "allow" # dumb
-too_many_lines = "warn"
-transmute_ptr_to_ptr = "warn"
-trivially_copy_pass_by_ref = "warn"
-unchecked_duration_subtraction = "warn"
-unicode_not_nfc = "warn"
-uninlined_format_args = "allow" # This is a subjective style choice.
-unnecessary_box_returns = "warn"
-unnecessary_join = "warn"
-unnecessary_literal_bound = "warn"
-unnecessary_wraps = "warn"
-unnested_or_patterns = "allow" # TODO: Consider enabling this lint.
-unreadable_literal = "warn"
-unsafe_derive_deserialize = "warn"
-unused_async = "warn"
-unused_self = "warn"
-use_self = "warn"
-used_underscore_binding = "warn"
-used_underscore_items = "warn"
-verbose_bit_mask = "warn"
-wildcard_imports = "warn"
-zero_sized_map_values = "warn"
+[lints]
+workspace = true
diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs
index 7dd343f2..31011c06 100644
--- a/primitives/src/lib.rs
+++ b/primitives/src/lib.rs
@@ -17,8 +17,8 @@
#![warn(missing_docs)]
#![warn(deprecated_in_future)]
#![doc(test(attr(warn(unused))))]
-// Exclude lints we don't think are valuable.
-#![allow(clippy::uninlined_format_args)] // Allow `format!("{}", x)` instead of enforcing `format!("{x}")`
+// Package-specific lint overrides.
+#![allow(clippy::missing_errors_doc)] // TODO: Write errors section in docs.
#[cfg(feature = "alloc")]
extern crate alloc;
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.