diff -r 6af892a0a4b8 -r f57a3d48072b rust/hedgewars-server/src/protocol/parser.rs --- 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, 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, 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()),