From 97b12942473f2925f2227a133da78ae6074c664e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 27 Sep 2020 03:27:57 +0100 Subject: [PATCH] break out shapelib::Contents::load1 Signed-off-by: Ian Jackson --- src/shapelib.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/shapelib.rs b/src/shapelib.rs index 5dea1d8e..c7b08c7d 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -177,17 +177,19 @@ impl Piece for Item { } impl ItemSpec { - fn load(&self) -> Result,SpecError> { + #[throws(SpecError)] + fn load(&self) -> Box { let libs = GLOBAL.shapelibs.read().unwrap(); let lib = libs.get(&self.lib).ok_or(SE::LibraryNotFound)?; - lib.load1(&self.item)?; + lib.load1(&self.item)? } +} impl Contents { fn load1(&self, name: &str) -> Result,SpecError> { - let idata = lib.items.get(name).ok_or(SE::LibraryItemNotFound)?; + let idata = self.items.get(name).ok_or(SE::LibraryItemNotFound)?; - let svg_path = format!("{}/{}.usvg", lib.dirname, &name); + let svg_path = format!("{}/{}.usvg", self.dirname, &name); let svg_data = fs::read_to_string(&svg_path) .map_err(|e| if e.kind() == ErrorKind::NotFound { warn!("library item lib={} itme={} data file {:?} not found", @@ -213,7 +215,7 @@ impl Contents { let face = ItemFace { svg: Html(svg_data), desc, centre, scale }; let faces = index_vec![ face ]; let it = Item { faces, descs, outline, desc_hidden, - itemname: name.clone() }; + itemname: name.to_string() }; Ok(Box::new(it)) } } @@ -262,6 +264,7 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { f.read_to_string(&mut s).map_err(ioe)?; let toplevel : toml::Value = s.parse()?; let mut l = Contents { + libname: libname.to_string(), items: HashMap::new(), dirname: dirname.to_string(), }; -- 2.30.2