rust/hedgewars-server/src/server/haskell.rs
changeset 15823 f57a3d48072b
parent 15603 ab095fc0256c
--- a/rust/hedgewars-server/src/server/haskell.rs	Tue Jun 22 01:41:33 2021 +0300
+++ b/rust/hedgewars-server/src/server/haskell.rs	Tue Jun 22 01:57:50 2021 +0300
@@ -3,7 +3,7 @@
     bytes::complete::{escaped_transform, is_not, tag, take_while, take_while1},
     character::{is_alphanumeric, is_digit, is_space},
     combinator::{map, map_res},
-    multi::{many0, separated_list},
+    multi::{many0, separated_list0},
     sequence::{delimited, pair, preceded, separated_pair, terminated},
     ExtendInto, IResult,
 };
@@ -159,10 +159,10 @@
 fn surrounded<'a, P, O>(
     prefix: &'static str,
     suffix: &'static str,
-    parser: P,
-) -> impl Fn(&'a [u8]) -> HaskellResult<'a, O>
+    mut parser: P,
+) -> impl FnMut(&'a [u8]) -> HaskellResult<'a, O>
 where
-    P: Fn(&'a [u8]) -> HaskellResult<'a, O>,
+    P: FnMut(&'a [u8]) -> HaskellResult<'a, O>,
 {
     move |input| {
         delimited(
@@ -285,14 +285,14 @@
 
 fn tuple(input: &[u8]) -> HaskellResult<HaskellValue> {
     map(
-        surrounded("(", ")", separated_list(comma, value)),
+        surrounded("(", ")", separated_list0(comma, value)),
         HaskellValue::Tuple,
     )(input)
 }
 
 fn list(input: &[u8]) -> HaskellResult<HaskellValue> {
     map(
-        surrounded("[", "]", separated_list(comma, value)),
+        surrounded("[", "]", separated_list0(comma, value)),
         HaskellValue::List,
     )(input)
 }
@@ -316,7 +316,7 @@
         map(
             pair(
                 identifier,
-                surrounded("{", "}", separated_list(comma, named_field)),
+                surrounded("{", "}", separated_list0(comma, named_field)),
             ),
             |(name, mut fields)| HaskellValue::Struct {
                 name,