diff --git a/Cargo.toml b/Cargo.toml index 9a64d46..18448d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,5 +31,46 @@ zerocopy = { version = "0.8", optional = true, features = ["derive"] } alloc = [] extra-sizes = [] +[lints.clippy] +arithmetic_side_effects = "warn" +borrow_as_ptr = "warn" +cast_lossless = "warn" +cast_possible_truncation = "warn" +cast_possible_wrap = "warn" +cast_precision_loss = "warn" +cast_sign_loss = "warn" +checked_conversions = "warn" +doc_markdown = "warn" +from_iter_instead_of_collect = "warn" +manual_assert = "warn" +map_unwrap_or = "warn" +missing_errors_doc = "warn" +missing_panics_doc = "warn" +mod_module_files = "warn" +must_use_candidate = "warn" +implicit_saturating_sub = "warn" +panic = "warn" +panic_in_result_fn = "warn" +ptr_as_ptr = "warn" +redundant_closure_for_method_calls = "warn" +ref_as_ptr = "warn" +return_self_not_must_use = "warn" +semicolon_if_nothing_returned = "warn" +trivially_copy_pass_by_ref = "warn" +std_instead_of_alloc = "warn" +std_instead_of_core = "warn" +# undocumented_unsafe_blocks = "warn" TODO +unwrap_in_result = "warn" +unwrap_used = "warn" + +[lints.rust] +missing_copy_implementations = "warn" +missing_debug_implementations = "warn" +missing_docs = "warn" +trivial_casts = "warn" +trivial_numeric_casts = "warn" +unused_lifetimes = "warn" +unused_qualifications = "warn" + [package.metadata.docs.rs] all-features = true diff --git a/src/lib.rs b/src/lib.rs index cd497e1..1d83b9f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,33 +5,6 @@ html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg", html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg" )] -#![warn( - clippy::arithmetic_side_effects, - clippy::cast_lossless, - clippy::cast_possible_truncation, - clippy::cast_possible_wrap, - clippy::cast_precision_loss, - clippy::cast_sign_loss, - clippy::checked_conversions, - clippy::from_iter_instead_of_collect, - clippy::missing_errors_doc, - clippy::missing_panics_doc, - clippy::mod_module_files, - clippy::must_use_candidate, - clippy::implicit_saturating_sub, - clippy::panic, - clippy::panic_in_result_fn, - clippy::ptr_as_ptr, - clippy::ref_as_ptr, - clippy::semicolon_if_nothing_returned, - clippy::unwrap_used, - missing_docs, - missing_debug_implementations, - trivial_casts, - trivial_numeric_casts, - unused_lifetimes, - unused_qualifications -)] //! ## Features //! diff --git a/src/sizes.rs b/src/sizes.rs index 1838e2a..21c17a3 100644 --- a/src/sizes.rs +++ b/src/sizes.rs @@ -21,6 +21,8 @@ pub use extra_sizes::*; macro_rules! impl_array_sizes { ($testname:ident, $($len:expr => $ty:ident),+ $(,)?) => { $( + // SAFETY: we depend on `<$ty as Unsigned>::USIZE == $len` for unsafe pointer casts. + // We ensure this property holds by having the macro write a test for that below. unsafe impl ArraySize for $ty { type ArrayType = [T; $len]; } diff --git a/tests/mod.rs b/tests/mod.rs index ae56d4f..caec665 100644 --- a/tests/mod.rs +++ b/tests/mod.rs @@ -1,5 +1,7 @@ +#![allow(missing_docs, clippy::cast_possible_truncation, clippy::unwrap_used)] + +use core::mem::MaybeUninit; use hybrid_array::{Array, ArrayN}; -use std::mem::MaybeUninit; use typenum::{U0, U2, U3, U4, U5, U6, U7}; const EXAMPLE_SLICE: &[u8] = &[1, 2, 3, 4, 5, 6]; @@ -135,7 +137,7 @@ fn maybe_uninit() { fn map() { let base = Array::::from([1, 2, 3, 4]); let expected = Array::::from([2, 3, 4, 5]); - assert_eq!(base.map(|item| (item as u16) + 1), expected); + assert_eq!(base.map(|item| u16::from(item) + 1), expected); } #[test]