From bb40bebf5dfd9d7b4ad8fc10bae2bd0007e2cf5d Mon Sep 17 00:00:00 2001 From: widberg Date: Mon, 11 May 2026 14:56:25 -0400 Subject: [PATCH] Pass Version by ref --- bff-cli/src/create.rs | 2 +- bff-cli/src/create_resource.rs | 7 +++---- bff-cli/src/extract.rs | 4 ++-- bff-cli/src/extract_resource.rs | 8 ++------ bff/src/bigfile/mod.rs | 2 +- bff/src/class/trivial_class.rs | 4 ++-- bff/src/macros/classes.rs | 18 +++++++++--------- bff/src/traits/class_resource_transform.rs | 4 ++-- bff/tests/bigfile.rs | 13 ++++--------- 9 files changed, 26 insertions(+), 36 deletions(-) diff --git a/bff-cli/src/create.rs b/bff-cli/src/create.rs index 24c0c79..52a70ee 100644 --- a/bff-cli/src/create.rs +++ b/bff-cli/src/create.rs @@ -122,7 +122,7 @@ pub fn create( let resource: Resource = bff_class .class - .to_resource(version.clone(), platform, &name_context)?; + .to_resource(version, 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 857cf18..f6b5402 100644 --- a/bff-cli/src/create_resource.rs +++ b/bff-cli/src/create_resource.rs @@ -89,10 +89,9 @@ pub fn create_resource( .as_ref() .unwrap_or(&bff_class.header.version); - let resource: Resource = - bff_class - .class - .to_resource(version.clone(), platform, &name_context)?; + let resource: Resource = bff_class + .class + .to_resource(version, platform, &name_context)?; let mut resource_writer = BufWriter::new(File::create(resource_path)?); Resource::dump_bff_resource( diff --git a/bff-cli/src/extract.rs b/bff-cli/src/extract.rs index a77329a..56ae19e 100644 --- a/bff-cli/src/extract.rs +++ b/bff-cli/src/extract.rs @@ -155,13 +155,13 @@ fn export_bff_resource( rich_suffix: &String, ) -> BffCliResult<()> { let platform = bigfile.manifest().platform; - let version = bigfile.manifest().version.clone(); + let version = &bigfile.manifest().version; let header = BffResourceHeader { platform, version: version.clone(), }; - let class: Class = Class::from_resource(resource, version.clone(), platform, name_context)?; + let class: Class = Class::from_resource(resource, version, platform, name_context)?; let bff_class = BffClass { header, class }; let class_name = resource.class_name.with_context(name_context).to_string(); diff --git a/bff-cli/src/extract_resource.rs b/bff-cli/src/extract_resource.rs index 86a2441..da8adcb 100644 --- a/bff-cli/src/extract_resource.rs +++ b/bff-cli/src/extract_resource.rs @@ -57,12 +57,8 @@ pub fn extract_resource( version: version.clone(), }; - let class: Class = Class::from_resource( - &bff_resource.resource, - version.clone(), - platform, - &name_context, - )?; + let class: Class = + Class::from_resource(&bff_resource.resource, version, platform, &name_context)?; let bff_class = BffClass { header, class }; std::fs::create_dir(directory)?; diff --git a/bff/src/bigfile/mod.rs b/bff/src/bigfile/mod.rs index 131034f..b10ca82 100644 --- a/bff/src/bigfile/mod.rs +++ b/bff/src/bigfile/mod.rs @@ -98,7 +98,7 @@ impl BigFile { for (&name, resource) in &self.resources { let references = Class::from_resource( resource, - self.manifest.version.clone(), + &self.manifest.version, self.manifest.platform, name_context, ) diff --git a/bff/src/class/trivial_class.rs b/bff/src/class/trivial_class.rs index 892c35d..a8127e3 100644 --- a/bff/src/class/trivial_class.rs +++ b/bff/src/class/trivial_class.rs @@ -37,7 +37,7 @@ where { fn from_resource( resource: &Resource, - _version: Version, + _version: &Version, platform: Platform, name_context: &NameContext, ) -> BffResult { @@ -99,7 +99,7 @@ where { fn to_resource( &self, - _version: Version, + _version: &Version, platform: Platform, name_context: &NameContext, ) -> BffResult { diff --git a/bff/src/macros/classes.rs b/bff/src/macros/classes.rs index 5dc6321..c1c381a 100644 --- a/bff/src/macros/classes.rs +++ b/bff/src/macros/classes.rs @@ -102,7 +102,7 @@ macro_rules! classes { impl crate::traits::FromResource for Class { fn from_resource( resource: &crate::bigfile::resource::Resource, - version: crate::bigfile::versions::Version, + version: &crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult { @@ -114,7 +114,7 @@ macro_rules! classes { )* }; } - Err(crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into()) + Err(crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into()) } } }; @@ -123,7 +123,7 @@ macro_rules! classes { impl crate::traits::ToResource for Class { fn to_resource( &self, - version: crate::bigfile::versions::Version, + version: &crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult { @@ -200,12 +200,12 @@ macro_rules! classes { impl crate::traits::FromResource for $class { fn from_resource( resource: &crate::bigfile::resource::Resource, - version: crate::bigfile::versions::Version, + version: &crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, _name_context: &crate::names::NameContext, ) -> crate::BffResult<$class> { Err( - crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into(), + crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into(), ) } } @@ -213,7 +213,7 @@ macro_rules! classes { impl crate::traits::ToResource for $class { fn to_resource( &self, - _version: crate::bigfile::versions::Version, + _version: &crate::bigfile::versions::Version, _platform: crate::bigfile::platforms::Platform, _name_context: &crate::names::NameContext, ) -> crate::BffResult { @@ -269,7 +269,7 @@ macro_rules! classes { impl crate::traits::FromResource for $class { fn from_resource( resource: &crate::bigfile::resource::Resource, - version: crate::bigfile::versions::Version, + version: &crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult<$class> { @@ -281,7 +281,7 @@ macro_rules! classes { Ok(std::boxed::Box::new(shadow_class).into()) })* _ => Err( - crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version, platform).into(), + crate::error::UnimplementedClassError::new(resource.name, resource.class_name, version.clone(), platform).into(), ), } } @@ -291,7 +291,7 @@ macro_rules! classes { #[expect(unused_imports)] fn to_resource( &self, - version: crate::bigfile::versions::Version, + version: &crate::bigfile::versions::Version, platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult { diff --git a/bff/src/traits/class_resource_transform.rs b/bff/src/traits/class_resource_transform.rs index 17a1f08..bef1617 100644 --- a/bff/src/traits/class_resource_transform.rs +++ b/bff/src/traits/class_resource_transform.rs @@ -7,7 +7,7 @@ use crate::names::NameContext; pub trait FromResource: Sized { fn from_resource( resource: &Resource, - version: Version, + version: &Version, platform: Platform, name_context: &NameContext, ) -> BffResult; @@ -16,7 +16,7 @@ pub trait FromResource: Sized { pub trait ToResource { fn to_resource( &self, - version: Version, + version: &Version, platform: Platform, name_context: &NameContext, ) -> BffResult; diff --git a/bff/tests/bigfile.rs b/bff/tests/bigfile.rs index 5475856..0153252 100644 --- a/bff/tests/bigfile.rs +++ b/bff/tests/bigfile.rs @@ -61,16 +61,11 @@ fn roundtrip_resources(bigfile_path_str: String) { let mut reader = BufReader::new(f); let mut name_context = probe_name_context(&mut reader, platform); let bigfile = BigFile::read_platform(&mut reader, platform, &None, &name_context).unwrap(); - let version = bigfile.manifest().version.clone(); + let version = &bigfile.manifest().version; for bff_resource in bigfile.bff_resources() { - let class: Class = Class::from_resource( - bff_resource.resource, - version.clone(), - platform, - &name_context, - ) - .unwrap(); + let class: Class = + Class::from_resource(bff_resource.resource, version, platform, &name_context).unwrap(); let bff_class = BffClass { header: BffResourceHeader { platform, @@ -90,7 +85,7 @@ fn roundtrip_resources(bigfile_path_str: String) { let new_resource: Resource = roundtripped_bff_class .class - .to_resource(version.clone(), platform, &name_context) + .to_resource(version, platform, &name_context) .unwrap(); let resource_name = bff_resource .resource