From 08febb0d8d95bbbae9861130a756e842eae40eef Mon Sep 17 00:00:00 2001 From: acdenisSK Date: Mon, 18 Dec 2017 17:19:16 +0100 Subject: Fix multiple char delimiters --- src/framework/standard/args.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/framework') diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index 3c596a0..8c23fd6 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -79,11 +79,16 @@ fn parse(s: &mut String, delimiter: &str) -> Result where T::Err: StdError { let mut pos = s.find(delimiter).unwrap_or_else(|| s.len()); + let res = (&s[..pos]).parse::().map_err(Error::Parse); - // +1 is for the delimiter - if pos < s.len() { - pos += 1; - } + // First find out whether the delimiter is 2 chars or longer, + // if so add those extras to the position. + // Otherwise just add `1` for 1 char delimiters. + pos += if delimiter.len() > 1 { + delimiter.len() + } else { + 1 + }; s.drain(..pos); res -- cgit v1.2.3