diff --git a/bff-cli/src/create.rs b/bff-cli/src/create.rs index 12a502f..f83c6ad 100644 --- a/bff-cli/src/create.rs +++ b/bff-cli/src/create.rs @@ -19,7 +19,7 @@ fn validate_version_override_name_type( expected_name_type: NameType, ) -> BffCliResult<()> { if let Some(version_override) = version_override { - let override_name_type: NameType = version_override.try_into()?; + let override_name_type = version_override.name_type()?; if override_name_type != expected_name_type { return Err(std::io::Error::other(format!( "`--version-override` implies NameType {:?}, but context requires {:?}", diff --git a/bff-cli/src/create_resource.rs b/bff-cli/src/create_resource.rs index 445ab7e..857cf18 100644 --- a/bff-cli/src/create_resource.rs +++ b/bff-cli/src/create_resource.rs @@ -18,7 +18,7 @@ fn validate_version_override_name_type( expected_name_type: NameType, ) -> BffCliResult<()> { if let Some(version_override) = version_override { - let override_name_type: NameType = version_override.try_into()?; + let override_name_type = version_override.name_type()?; if override_name_type != expected_name_type { return Err(std::io::Error::other(format!( "`--version-override` implies NameType {:?}, but context requires {:?}", diff --git a/bff-cli/src/extract_resource.rs b/bff-cli/src/extract_resource.rs index 81aac74..86a2441 100644 --- a/bff-cli/src/extract_resource.rs +++ b/bff-cli/src/extract_resource.rs @@ -18,7 +18,7 @@ fn validate_version_override_name_type( expected_name_type: NameType, ) -> BffCliResult<()> { if let Some(version_override) = version_override { - let override_name_type: NameType = version_override.try_into()?; + let override_name_type = version_override.name_type()?; if override_name_type != expected_name_type { return Err(std::io::Error::other(format!( "`--version-override` implies NameType {:?}, but context requires {:?}", diff --git a/bff/src/bigfile/mod.rs b/bff/src/bigfile/mod.rs index 2b6d81b..ecd45dc 100644 --- a/bff/src/bigfile/mod.rs +++ b/bff/src/bigfile/mod.rs @@ -87,7 +87,7 @@ impl BigFile { reader.seek(std::io::SeekFrom::Start(start))?; let version = version_override.clone().unwrap_or(version); - (&version).try_into() + version.name_type() } pub fn dump_bff_resource( diff --git a/bff/src/bigfile/resource.rs b/bff/src/bigfile/resource.rs index 390dd01..1a23c82 100644 --- a/bff/src/bigfile/resource.rs +++ b/bff/src/bigfile/resource.rs @@ -50,7 +50,7 @@ pub struct BffResourceHeader { impl BffResourceHeader { pub fn name_type(&self) -> BffResult { - (&self.version).try_into() + self.version.name_type() } pub fn probe_name_type(reader: &mut R) -> BffResult { diff --git a/bff/src/macros/bigfiles.rs b/bff/src/macros/bigfiles.rs index 3e410a2..fae052b 100644 --- a/bff/src/macros/bigfiles.rs +++ b/bff/src/macros/bigfiles.rs @@ -286,17 +286,13 @@ macro_rules! bigfiles { } } - impl TryFrom<&crate::bigfile::versions::Version> for crate::names::NameType { - type Error = crate::BffError; - - fn try_from( - version: &crate::bigfile::versions::Version, - ) -> Result { + impl crate::bigfile::versions::Version { + pub fn name_type(&self) -> crate::BffResult { use crate::bigfile::versions::Version::*; use crate::traits::BigFileIo; - match version { + match self { $($version_pattern => Ok(<$bigfile as BigFileIo>::NAME_TYPE),)* - _ => Err(crate::error::UnimplementedVersionError::new(version.clone()).into()), + _ => Err(crate::error::UnimplementedVersionError::new(self.clone()).into()), } } } diff --git a/bff/src/macros/classes.rs b/bff/src/macros/classes.rs index d4120c1..5dc6321 100644 --- a/bff/src/macros/classes.rs +++ b/bff/src/macros/classes.rs @@ -106,7 +106,7 @@ macro_rules! classes { platform: crate::bigfile::platforms::Platform, name_context: &crate::names::NameContext, ) -> crate::BffResult { - let name_type = (&version).try_into()?; + let name_type = version.name_type()?; if let Some(class_type) = ClassType::from_name_and_type(resource.class_name, name_type) { return match class_type { $( diff --git a/bff/src/names/json.rs b/bff/src/names/json.rs index e9b7231..7099955 100644 --- a/bff/src/names/json.rs +++ b/bff/src/names/json.rs @@ -18,7 +18,7 @@ fn probe_name_type_from_value(value: &Value) -> serde_json::Result { )) })?; let version: Version = version_string.into(); - (&version).try_into().map_err(|err: crate::BffError| { + version.name_type().map_err(|err: crate::BffError| { serde_json::Error::io(Error::new( ErrorKind::InvalidData, format!("unable to derive NameType from version `{version_string}`: {err}"),