rust/hedgewars-server/src/protocol/parser.rs
changeset 15801 f57a3d48072b
parent 15124 824472aa4d97
--- a/rust/hedgewars-server/src/protocol/parser.rs	Tue Jun 22 01:41:33 2021 +0300
+++ b/rust/hedgewars-server/src/protocol/parser.rs	Tue Jun 22 01:57:50 2021 +0300
@@ -12,7 +12,7 @@
     character::complete::{newline, not_line_ending},
     combinator::{map, peek},
     error::{ErrorKind, ParseError},
-    multi::separated_list,
+    multi::separated_list0,
     sequence::{delimited, pair, preceded, terminated, tuple},
     Err, IResult,
 };
@@ -211,7 +211,7 @@
         name: &'a str,
         parser: F,
         constructor: G,
-    ) -> impl Fn(&'a [u8]) -> HwResult<'a, HwProtocolMessage>
+    ) -> impl FnMut(&'a [u8]) -> HwResult<'a, HwProtocolMessage>
     where
         F: Fn(&[u8]) -> HwResult<T>,
         G: Fn(T) -> HwProtocolMessage,
@@ -249,7 +249,7 @@
         name: &'a str,
         parser: F,
         constructor: G,
-    ) -> impl Fn(&'a [u8]) -> HwResult<'a, HwProtocolMessage>
+    ) -> impl FnMut(&'a [u8]) -> HwResult<'a, HwProtocolMessage>
     where
         F: Fn(&'a [u8]) -> HwResult<'a, T>,
         G: Fn(T) -> HwProtocolMessage,
@@ -308,7 +308,7 @@
                     tag_no_case("RND"),
                     alt((
                         map(peek(end_of_message), |_| vec![]),
-                        preceded(spaces, separated_list(spaces, cmd_arg)),
+                        preceded(spaces, separated_list0(spaces, cmd_arg)),
                     )),
                 ),
                 Rnd,
@@ -322,7 +322,7 @@
         name: &'a str,
         parser: F,
         constructor: G,
-    ) -> impl Fn(&'a [u8]) -> HwResult<'a, GameCfg>
+    ) -> impl FnMut(&'a [u8]) -> HwResult<'a, GameCfg>
     where
         F: Fn(&[u8]) -> HwResult<T>,
         G: Fn(T) -> GameCfg,
@@ -354,7 +354,7 @@
                         a_line,
                         alt((
                             map(peek(end_of_message), |_| None),
-                            map(preceded(newline, separated_list(newline, a_line)), Some),
+                            map(preceded(newline, separated_list0(newline, a_line)), Some),
                         )),
                     ),
                     |(name, values)| GameCfg::Scheme(name, values.unwrap_or_default()),