From f8a5b0d0d8c790e5754a5854588864cc6a8de39e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 11 May 2021 23:54:32 +0100 Subject: [PATCH] shapelib: Move catalogue_data into LibrarySource Signed-off-by: Ian Jackson --- src/shapelib.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/shapelib.rs b/src/shapelib.rs index 7b58a0d3..56c5d6aa 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -593,24 +593,24 @@ fn resolve_inherit<'r>(depth: u8, groups: &toml::value::Table, } pub trait LibrarySource { + fn catalogue_data(&self) -> &str; fn svg_dir(&self) -> String; fn note_svg(&mut self, _basename: &GoodItemName) { } } struct BuiltinLibrary<'l> { + catalogue_data: &'l str, dirname: &'l str, } impl LibrarySource for BuiltinLibrary<'_> { - fn svg_dir(&self) -> String { - self.dirname.to_string() - } + fn catalogue_data(&self) -> &str { self.catalogue_data } + fn svg_dir(&self) -> String { self.dirname.to_string() } } #[throws(LibraryLoadError)] -fn load_catalogue(libname: &str, catalogue_data: String, - src: &mut dyn LibrarySource) -> Contents { - let toplevel: toml::Value = catalogue_data.parse()?; +fn load_catalogue(libname: &str, src: &mut dyn LibrarySource) -> Contents { + let toplevel: toml::Value = src.catalogue_data().parse()?; let mut l = Contents { libname: libname.to_string(), items: HashMap::new(), @@ -777,9 +777,10 @@ pub fn load1(l: &Explicit1) { s }; - let mut src = BuiltinLibrary { dirname: &l.dirname }; + let catalogue_data = catalogue_data.as_str(); + let mut src = BuiltinLibrary { dirname: &l.dirname, catalogue_data }; - let data = load_catalogue(&l.name, catalogue_data, &mut src)?; + let data = load_catalogue(&l.name, &mut src)?; let count = data.items.len(); SHAPELIBS.write() .get_or_insert_with(default) -- 2.30.2