From d5a120c304b7b3e35bca628c606dff83df06efde Mon Sep 17 00:00:00 2001 From: widberg Date: Mon, 27 Apr 2026 12:57:54 -0400 Subject: [PATCH] Fix clippy lints --- Cargo.toml | 3 +++ bff-cli/src/create.rs | 5 ++--- bff-cli/src/create_resource.rs | 4 ++-- bff/src/bigfile/platforms.rs | 2 +- bff/src/bigfile/resource.rs | 2 +- bff/src/bigfile/v1_2000_77_18_pc/pool.rs | 2 +- bff/src/bigfile/v1_381_64_09_pc/pool.rs | 2 +- bff/src/bigfile/versions.rs | 2 +- bff/src/class/bitmap/v1_06_63_02_pc.rs | 2 +- bff/src/class/bitmap/v1_291_03_06_pc.rs | 2 +- bff/src/class/bitmap/v1_381_67_09_pc.rs | 2 +- bff/src/class/mesh/shared.rs | 6 +++--- bff/src/class/trivial_class.rs | 6 +++--- bff/src/helpers/mod.rs | 4 ++-- bff/src/lz/lzrs.rs | 4 ++-- bff/src/macros/bigfiles.rs | 18 +++++++++--------- bff/src/macros/classes.rs | 21 ++++++++++----------- bff/src/names/context.rs | 2 +- bff/src/names/value.rs | 2 +- bff/src/traits/class_resource_transform.rs | 4 ++-- bff/src/tsc/cps.rs | 3 +-- bff/src/tsc/csc.rs | 2 +- bff/tests/bigfile.rs | 4 ++-- 23 files changed, 52 insertions(+), 52 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1e52f87..7811fae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,8 @@ edition = "2024" rust-version = "1.88.0" [workspace.lints.clippy] +allow_attributes = "warn" +assigning_clones = "warn" bool_to_int_with_if = "warn" branches_sharing_code = "warn" comparison_chain = "warn" @@ -20,6 +22,7 @@ flat_map_option = "warn" if_then_some_else_none = "warn" implicit_clone = "warn" manual_midpoint = "warn" +missing_const_for_fn = "warn" non_std_lazy_statics = "warn" precedence_bits = "warn" redundant_test_prefix = "warn" diff --git a/bff-cli/src/create.rs b/bff-cli/src/create.rs index 78e71a8..12a502f 100644 --- a/bff-cli/src/create.rs +++ b/bff-cli/src/create.rs @@ -8,7 +8,7 @@ use bff::bigfile::platforms::Platform; use bff::bigfile::resource::{BffClass, Resource}; use bff::bigfile::versions::Version; use bff::names::{NameContext, NameType}; -use bff::traits::{Artifact, Import, IntoResource}; +use bff::traits::{Artifact, Import, ToResource}; use indicatif::{ProgressBar, ProgressStyle}; use crate::error::BffCliResult; @@ -32,7 +32,6 @@ fn validate_version_override_name_type( Ok(()) } -#[allow(clippy::too_many_arguments)] pub fn create( directory: &Path, bigfile_path: &Path, @@ -128,7 +127,7 @@ pub fn create( let resource: Resource = bff_class .class - .into_resource(version.clone(), platform, &name_context)?; + .to_resource(version.clone(), platform, &name_context)?; if resources.contains_key(&resource.name) { return Err(crate::error::BffCliError::DuplicateResource { diff --git a/bff-cli/src/create_resource.rs b/bff-cli/src/create_resource.rs index bd376c8..445ab7e 100644 --- a/bff-cli/src/create_resource.rs +++ b/bff-cli/src/create_resource.rs @@ -8,7 +8,7 @@ use bff::bigfile::platforms::Platform; use bff::bigfile::resource::{BffClass, Resource}; use bff::bigfile::versions::Version; use bff::names::{NameContext, NameType}; -use bff::traits::{Artifact, Import, IntoResource}; +use bff::traits::{Artifact, Import, ToResource}; use crate::error::BffCliResult; use crate::extract::write_names; @@ -92,7 +92,7 @@ pub fn create_resource( let resource: Resource = bff_class .class - .into_resource(version.clone(), platform, &name_context)?; + .to_resource(version.clone(), platform, &name_context)?; let mut resource_writer = BufWriter::new(File::create(resource_path)?); Resource::dump_bff_resource( diff --git a/bff/src/bigfile/platforms.rs b/bff/src/bigfile/platforms.rs index 7cfb862..66e2a1c 100644 --- a/bff/src/bigfile/platforms.rs +++ b/bff/src/bigfile/platforms.rs @@ -25,7 +25,7 @@ platforms! { } impl Platform { - pub fn size_on_disk(&self) -> u16 { + pub const fn size_on_disk(&self) -> u16 { 1 } } diff --git a/bff/src/bigfile/resource.rs b/bff/src/bigfile/resource.rs index 763132d..390dd01 100644 --- a/bff/src/bigfile/resource.rs +++ b/bff/src/bigfile/resource.rs @@ -60,7 +60,7 @@ impl BffResourceHeader { header.name_type() } - fn data_padded_size_on_disk(&self) -> u16 { + const fn data_padded_size_on_disk(&self) -> u16 { let non_data_size = 4 + 2; let total_unpadded_size = non_data_size + self.platform.size_on_disk() + self.version.size_on_disk(); diff --git a/bff/src/bigfile/v1_2000_77_18_pc/pool.rs b/bff/src/bigfile/v1_2000_77_18_pc/pool.rs index fb40594..981c47b 100644 --- a/bff/src/bigfile/v1_2000_77_18_pc/pool.rs +++ b/bff/src/bigfile/v1_2000_77_18_pc/pool.rs @@ -123,7 +123,7 @@ pub struct PoolResource { pub resource: Resource, } -pub fn calculate_padded_pool_header_size( +pub const fn calculate_padded_pool_header_size( object_names_count: usize, resource_descriptions_count: usize, reference_records_count: usize, diff --git a/bff/src/bigfile/v1_381_64_09_pc/pool.rs b/bff/src/bigfile/v1_381_64_09_pc/pool.rs index 956e7a1..2bbc20d 100644 --- a/bff/src/bigfile/v1_381_64_09_pc/pool.rs +++ b/bff/src/bigfile/v1_381_64_09_pc/pool.rs @@ -119,7 +119,7 @@ pub struct PoolHeader { _reference_records_sentinel: ReferenceRecord, } -pub fn calculate_padded_pool_header_size( +pub const fn calculate_padded_pool_header_size( resource_descriptions_indices_size: usize, resource_descriptions_size: usize, reference_records_size: usize, diff --git a/bff/src/bigfile/versions.rs b/bff/src/bigfile/versions.rs index 210df90..8e626b8 100644 --- a/bff/src/bigfile/versions.rs +++ b/bff/src/bigfile/versions.rs @@ -65,7 +65,7 @@ pub enum Version { } impl Version { - pub fn size_on_disk(&self) -> u16 { + pub const fn size_on_disk(&self) -> u16 { 1 + match self { Self::Asobo(_, _, _, _) => 2 * 4, Self::AsoboLegacy(_, _) => 2 * 2, diff --git a/bff/src/class/bitmap/v1_06_63_02_pc.rs b/bff/src/class/bitmap/v1_06_63_02_pc.rs index 9d36b1e..67182bb 100644 --- a/bff/src/class/bitmap/v1_06_63_02_pc.rs +++ b/bff/src/class/bitmap/v1_06_63_02_pc.rs @@ -56,7 +56,7 @@ impl Import for BitmapV1_06_63_02PC { else { return Err(Error::ImportBadArtifact); }; - self.body.data = data.clone(); + self.body.data.clone_from(data); Ok(()) } } diff --git a/bff/src/class/bitmap/v1_291_03_06_pc.rs b/bff/src/class/bitmap/v1_291_03_06_pc.rs index 7de3f9f..db64bae 100644 --- a/bff/src/class/bitmap/v1_291_03_06_pc.rs +++ b/bff/src/class/bitmap/v1_291_03_06_pc.rs @@ -63,7 +63,7 @@ impl Import for BitmapV1_291_03_06PC { else { return Err(Error::ImportBadArtifact); }; - self.body.data = data.clone(); + self.body.data.clone_from(data); Ok(()) } } diff --git a/bff/src/class/bitmap/v1_381_67_09_pc.rs b/bff/src/class/bitmap/v1_381_67_09_pc.rs index 13d1707..7348c7c 100644 --- a/bff/src/class/bitmap/v1_381_67_09_pc.rs +++ b/bff/src/class/bitmap/v1_381_67_09_pc.rs @@ -119,7 +119,7 @@ impl Export for BitmapV1_381_67_09PC { caps2, }) .unwrap(); - dds.data = self.body.data.clone(); + dds.data.clone_from(&self.body.data); let mut dds_writer = Cursor::new(Vec::new()); dds.write(&mut dds_writer).unwrap(); Ok(HashMap::from([( diff --git a/bff/src/class/mesh/shared.rs b/bff/src/class/mesh/shared.rs index cbb25fb..522568e 100644 --- a/bff/src/class/mesh/shared.rs +++ b/bff/src/class/mesh/shared.rs @@ -128,7 +128,7 @@ pub enum Vertices { } impl Vertices { - pub fn len(&self) -> usize { + pub const fn len(&self) -> usize { match self { Self::LayoutPosition(layout_positions) => layout_positions.len(), Self::LayoutPositionUV(layout_position_uvs) => layout_position_uvs.len(), @@ -139,7 +139,7 @@ impl Vertices { } } - pub fn is_empty(&self) -> bool { + pub const fn is_empty(&self) -> bool { match self { Self::LayoutPosition(layout_positions) => layout_positions.is_empty(), Self::LayoutPositionUV(layout_position_uvs) => layout_position_uvs.is_empty(), @@ -150,7 +150,7 @@ impl Vertices { } } - pub fn layout(&self) -> usize { + pub const fn layout(&self) -> usize { match self { Self::LayoutPosition(_) => LayoutPosition::SIZE, Self::LayoutPositionUV(_) => LayoutPositionUV::SIZE, diff --git a/bff/src/class/trivial_class.rs b/bff/src/class/trivial_class.rs index 1949f90..892c35d 100644 --- a/bff/src/class/trivial_class.rs +++ b/bff/src/class/trivial_class.rs @@ -10,7 +10,7 @@ use crate::bigfile::resource::Resource; use crate::bigfile::resource::ResourceData::{Data, SplitData}; use crate::bigfile::versions::Version; use crate::names::{Name, NameContext}; -use crate::traits::{FromResource, IntoResource}; +use crate::traits::{FromResource, ToResource}; use crate::{BffError, BffResult}; #[derive(Debug, Serialize, Deserialize, JsonSchema, ReferencedNames)] @@ -90,14 +90,14 @@ where } } -impl IntoResource for TrivialClass +impl ToResource for TrivialClass where for<'a> LinkHeaderType: BinWrite + 'a, for<'a> ::Args<'a>: Default, for<'a> BodyType: BinWrite + 'a, for<'a> ::Args<'a>: Default, { - fn into_resource( + fn to_resource( &self, _version: Version, platform: Platform, diff --git a/bff/src/helpers/mod.rs b/bff/src/helpers/mod.rs index 07c0b62..d05048a 100644 --- a/bff/src/helpers/mod.rs +++ b/bff/src/helpers/mod.rs @@ -10,11 +10,11 @@ mod math; mod option; mod strings; -pub fn calculate_padding(position: usize, alignment: usize) -> usize { +pub const fn calculate_padding(position: usize, alignment: usize) -> usize { position.next_multiple_of(alignment) - position } -pub fn calculated_padded(position: usize, alignment: usize) -> usize { +pub const fn calculated_padded(position: usize, alignment: usize) -> usize { position.next_multiple_of(alignment) } diff --git a/bff/src/lz/lzrs.rs b/bff/src/lz/lzrs.rs index 9bab29a..f2d28b8 100644 --- a/bff/src/lz/lzrs.rs +++ b/bff/src/lz/lzrs.rs @@ -145,7 +145,7 @@ struct Packet { } impl Packet { - fn with_match_length(match_length: i32) -> Self { + const fn with_match_length(match_length: i32) -> Self { Self { match_length, total_length: 0, @@ -153,7 +153,7 @@ impl Packet { } } - fn reset_total_length(&mut self) { + const fn reset_total_length(&mut self) { self.total_length = 0; } } diff --git a/bff/src/macros/bigfiles.rs b/bff/src/macros/bigfiles.rs index ea52124..39ddbbd 100644 --- a/bff/src/macros/bigfiles.rs +++ b/bff/src/macros/bigfiles.rs @@ -1,7 +1,7 @@ macro_rules! bigfiles { ($($pattern:pat => $bigfile:ident),* $(,)?) => { impl BigFile { - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn read_platform( reader: &mut R, platform: crate::bigfile::platforms::Platform, @@ -35,7 +35,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn write( &self, writer: &mut W, @@ -78,7 +78,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn dump_resource( &self, resource: &crate::bigfile::resource::Resource, @@ -112,7 +112,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn read_resource( &self, reader: &mut R, @@ -145,7 +145,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn read_bff_resource( &self, reader: &mut R, @@ -179,7 +179,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] impl crate::bigfile::resource::Resource { pub fn dump_resource( &self, @@ -214,7 +214,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn dump_bff_resource( &self, writer: &mut W, @@ -255,7 +255,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn read_resource( reader: &mut R, platform: crate::bigfile::platforms::Platform, @@ -287,7 +287,7 @@ macro_rules! bigfiles { } } - #[allow(unused_imports)] + #[expect(unused_imports)] pub fn read_bff_resource( reader: &mut R, name_context: &crate::names::NameContext, diff --git a/bff/src/macros/classes.rs b/bff/src/macros/classes.rs index 3e89cf4..d4120c1 100644 --- a/bff/src/macros/classes.rs +++ b/bff/src/macros/classes.rs @@ -120,22 +120,22 @@ macro_rules! classes { }; (@emit_try_into_resource $($class:ident)*) => { - impl crate::traits::IntoResource for Class { - fn into_resource( + impl crate::traits::ToResource for Class { + fn to_resource( &self, version: crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult { match self { - $(Class::$class(class) => <$crate::macros::classes::classes!(@class_ty $class) as crate::traits::IntoResource>::into_resource(class, version, platform, name_context),)* + $(Class::$class(class) => <$crate::macros::classes::classes!(@class_ty $class) as crate::traits::ToResource>::to_resource(class, version, platform, name_context),)* } } } }; (@emit_class_names_fn $($class:ident)*) => { - pub fn class_base_names() -> &'static[&'static str] { + pub const fn class_base_names() -> &'static[&'static str] { &[ $(stringify!($class),)* ] } }; @@ -210,8 +210,8 @@ macro_rules! classes { } } - impl crate::traits::IntoResource for $class { - fn into_resource( + impl crate::traits::ToResource for $class { + fn to_resource( &self, _version: crate::bigfile::versions::Version, _platform: crate::bigfile::platforms::Platform, @@ -267,7 +267,6 @@ macro_rules! classes { } impl crate::traits::FromResource for $class { - #[allow(unused_imports)] fn from_resource( resource: &crate::bigfile::resource::Resource, version: crate::bigfile::versions::Version, @@ -288,9 +287,9 @@ macro_rules! classes { } } - impl crate::traits::IntoResource for $class { - #[allow(unused_imports)] - fn into_resource( + impl crate::traits::ToResource for $class { + #[expect(unused_imports)] + fn to_resource( &self, version: crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, @@ -300,7 +299,7 @@ macro_rules! classes { use crate::bigfile::versions::Version::*; match self { $($class::$variant(class) => { - <$variant as crate::traits::IntoResource>::into_resource(class, version, platform, name_context) + <$variant as crate::traits::ToResource>::to_resource(class, version, platform, name_context) })* } } diff --git a/bff/src/names/context.rs b/bff/src/names/context.rs index 81f41b5..e8854e2 100644 --- a/bff/src/names/context.rs +++ b/bff/src/names/context.rs @@ -147,7 +147,7 @@ impl NameContext { scope::scope_mut(self, f) } - pub fn name_type(&self) -> NameType { + pub const fn name_type(&self) -> NameType { self.name_type } diff --git a/bff/src/names/value.rs b/bff/src/names/value.rs index 4614df7..ff00f1e 100644 --- a/bff/src/names/value.rs +++ b/bff/src/names/value.rs @@ -23,7 +23,7 @@ impl Name { self.0 } - pub fn with_context<'a>(&self, name_context: &'a NameContext) -> NameWithContext<'a> { + pub const fn with_context<'a>(&self, name_context: &'a NameContext) -> NameWithContext<'a> { NameWithContext { name: *self, name_context, diff --git a/bff/src/traits/class_resource_transform.rs b/bff/src/traits/class_resource_transform.rs index fa5f982..17a1f08 100644 --- a/bff/src/traits/class_resource_transform.rs +++ b/bff/src/traits/class_resource_transform.rs @@ -13,8 +13,8 @@ pub trait FromResource: Sized { ) -> BffResult; } -pub trait IntoResource { - fn into_resource( +pub trait ToResource { + fn to_resource( &self, version: Version, platform: Platform, diff --git a/bff/src/tsc/cps.rs b/bff/src/tsc/cps.rs index 9c04a54..7fa6c20 100644 --- a/bff/src/tsc/cps.rs +++ b/bff/src/tsc/cps.rs @@ -381,7 +381,7 @@ const CPS_VERSION: &[u8; 8] = b"OPAL_1.0"; const CPS_FIRST_CHAR: u8 = b'O'; const CPS_SEED_STEP: u8 = 37; -#[allow(clippy::unbuffered_bytes)] +#[expect(clippy::unbuffered_bytes)] pub fn cps_copy(reader: R, writer: &mut W) -> BffResult<()> { let mut seed = CPS_FIRST_CHAR; for byte in reader.bytes() { @@ -401,7 +401,6 @@ pub fn cps_buffer(data: &mut [u8]) { } } -#[allow(clippy::unbuffered_bytes)] #[binrw::parser(reader)] fn cps_crypt() -> BinResult> { let mut data = Vec::new(); diff --git a/bff/src/tsc/csc.rs b/bff/src/tsc/csc.rs index f378c0d..8cc843b 100644 --- a/bff/src/tsc/csc.rs +++ b/bff/src/tsc/csc.rs @@ -2,7 +2,7 @@ use std::io::{Read, Write}; use crate::BffResult; -#[allow(clippy::unbuffered_bytes)] +#[expect(clippy::unbuffered_bytes)] pub fn csc_copy(reader: R, writer: &mut W, key: u8) -> BffResult<()> { for byte in reader.bytes() { let byte = byte?; diff --git a/bff/tests/bigfile.rs b/bff/tests/bigfile.rs index e456478..50a3e9c 100644 --- a/bff/tests/bigfile.rs +++ b/bff/tests/bigfile.rs @@ -7,7 +7,7 @@ use bff::bigfile::platforms::Platform; use bff::bigfile::resource::{BffClass, BffResourceHeader, Resource}; use bff::class::Class; use bff::names::NameContext; -use bff::traits::{Export, FromResource, Import, IntoResource}; +use bff::traits::{Export, FromResource, Import, ToResource}; use binrw::io::BufReader; use crate::path_helpers::resolve_bigfile_path; @@ -77,7 +77,7 @@ fn roundtrip_resources(bigfile_path_str: String) { let new_resource: Resource = roundtripped_bff_class .class - .into_resource(version.clone(), platform, &name_context) + .to_resource(version.clone(), platform, &name_context) .unwrap(); let resource_name = resource.name.with_context(&name_context).to_string(); let class_name = resource.class_name.with_context(&name_context).to_string();