chiark / gitweb /
subst: Break out Substituting::err
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 May 2022 11:05:33 +0000 (12:05 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 May 2022 14:19:55 +0000 (15:19 +0100)
We're going to want to reuse this.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index bd608f7a2ed23a86da039ef3d5a5abaec2fcb76c..8f3908dc77ce6dee93a3fb878e962a408a3593f8 100644 (file)
@@ -1058,6 +1058,10 @@ impl<'s> Substituting<'s> {
   pub fn nest(self) -> String {
     self.s.into()
   }
+
+  fn err(&self, kind: SubstErrorKind) -> SubstError {
+    SubstError { kind, input: (*self.s).to_owned() }
+  }
 }
 
 #[throws(SubstError)]
@@ -1125,10 +1129,9 @@ fn subst_general<'i>(input: &Substituting<'i>,
 fn subst<'i>(before: Substituting<'i>, needle: &'static str, replacement: &str)
          -> Substituting<'i> {
   use SubstErrorKind as SEK;
-  let err = |kind| SubstError { kind, input: (*before.s).to_owned() };
   let (out, count) = subst_general(&before, needle, replacement)?;
-  if count == 0 { throw!(err(SEK::MissingToken(needle))) }
-  if count > 1 { throw!(err(SEK::RepeatedToken(needle))) }
+  if count == 0 { throw!(before.err(SEK::MissingToken(needle))) }
+  if count > 1 { throw!(before.err(SEK::RepeatedToken(needle))) }
   out
 }