From 4362245debe71b7fd03e7f655c1999627b2edbe0 Mon Sep 17 00:00:00 2001 From: "Shane F. Carr" Date: Tue, 25 Aug 2020 16:10:17 -0500 Subject: [PATCH] Review feedback. --- .../cldr-json-data-provider/src/reader.rs | 8 ++--- .../cldr-json-data-provider/src/support.rs | 32 +++++++++---------- .../src/transform/mod.rs | 9 +++--- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/components/cldr-json-data-provider/src/reader.rs b/components/cldr-json-data-provider/src/reader.rs index 5301dca7a67..2fe9db04e51 100644 --- a/components/cldr-json-data-provider/src/reader.rs +++ b/components/cldr-json-data-provider/src/reader.rs @@ -5,9 +5,7 @@ use std::path::PathBuf; /// Helper function to open a file and return failures as a crate error. pub fn open_reader(path: PathBuf) -> Result, Error> { - let file = match File::open(&path) { - Ok(file) => file, - Err(err) => return Err(Error::IoError(err, path)), - }; - Ok(BufReader::new(file)) + File::open(&path) + .map(BufReader::new) + .map_err(|e| Error::IoError(e, path)) } diff --git a/components/cldr-json-data-provider/src/support.rs b/components/cldr-json-data-provider/src/support.rs index 57ecc4fb13b..f047251925c 100644 --- a/components/cldr-json-data-provider/src/support.rs +++ b/components/cldr-json-data-provider/src/support.rs @@ -12,6 +12,14 @@ pub(crate) struct LazyCldrProvider { src: RwLock>, } +impl Default for LazyCldrProvider { + fn default() -> Self { + LazyCldrProvider { + src: RwLock::new(None), + } + } +} + fn map_poison(_err: E) -> DataError { // Can't return the PoisonError directly because it has lifetime parameters. DataError::new_resc_error(crate::error::Error::PoisonError) @@ -23,12 +31,6 @@ where T: DataProvider<'d> + DataKeySupport + DataEntryCollection + TryFrom<&'b CldrPaths>, >::Error: 'static + std::error::Error, { - pub fn new() -> Self { - Self { - src: RwLock::new(None), - } - } - /// Call T::load, initializing T if necessary. pub fn try_load( &self, @@ -45,11 +47,10 @@ where if src.is_none() { src.replace(T::try_from(cldr_paths).map_err(DataError::new_resc_error)?); } - // The RwLock is guaranteed to be populated at this point. - if let Some(data_provider) = src.as_ref() { - return data_provider.load(req).map(Some); - } - unreachable!(); + let data_provider = src + .as_ref() + .expect("The RwLock must be populated at this point."); + data_provider.load(req).map(Some) } /// Call T::iter_for_key, initializing T if necessary. @@ -68,10 +69,9 @@ where if src.is_none() { src.replace(T::try_from(cldr_paths).map_err(DataError::new_resc_error)?); } - // The RwLock is guaranteed to be populated at this point. - if let Some(data_provider) = src.as_ref() { - return data_provider.iter_for_key(data_key).map(Some); - } - unreachable!(); + let data_provider = src + .as_ref() + .expect("The RwLock must be populated at this point."); + data_provider.iter_for_key(data_key).map(Some) } } diff --git a/components/cldr-json-data-provider/src/transform/mod.rs b/components/cldr-json-data-provider/src/transform/mod.rs index 1d70642ba33..c14fbafc95a 100644 --- a/components/cldr-json-data-provider/src/transform/mod.rs +++ b/components/cldr-json-data-provider/src/transform/mod.rs @@ -16,17 +16,16 @@ impl<'a, 'd> CldrJsonDataProvider<'a, 'd> { pub fn new(cldr_paths: &'a CldrPaths) -> Self { CldrJsonDataProvider { cldr_paths, - plurals: LazyCldrProvider::new(), + plurals: Default::default(), } } } impl<'a, 'd> DataProvider<'d> for CldrJsonDataProvider<'a, 'd> { fn load(&self, req: &DataRequest) -> Result, DataError> { - if let Some(resp) = self.plurals.try_load(req, &self.cldr_paths)? { - return Ok(resp); - } - Err(DataError::UnsupportedDataKey(req.data_key)) + self.plurals + .try_load(req, &self.cldr_paths)? + .ok_or(DataError::UnsupportedDataKey(req.data_key)) } }