diff options
| author | acdenisSK <[email protected]> | 2018-05-26 22:16:17 +0200 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2018-05-26 22:18:35 +0200 |
| commit | 63469753a960431e5edacf520589493121f0e62d (patch) | |
| tree | 2eddaa00247d7bdf798708ac6c0bba0a9c6473c0 /src/framework | |
| parent | Switch to match_indices for occurences (diff) | |
| download | serenity-63469753a960431e5edacf520589493121f0e62d.tar.xz serenity-63469753a960431e5edacf520589493121f0e62d.zip | |
Remove "if length == 1" branch
Diffstat (limited to 'src/framework')
| -rw-r--r-- | src/framework/standard/args.rs | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index dcf328d..d25b3fc 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -94,39 +94,26 @@ fn parse<T: FromStr>(s: &mut String, delimiters: &[String]) -> Result<T, T::Err> return Err(Error::Eos); } - if delimiters.len() == 1 { - let delim = &delimiters[0]; - let mut pos = s.find(delim).unwrap_or_else(|| s.len()); - let res = (&s[..pos]).parse::<T>().map_err(Error::Parse)?; + let (mut smallest_pos, delimiter_len) = delimiters.iter().fold((s.len(), 0usize), |mut acc, delim| { + let other_pos = s.find(delim).unwrap_or_else(|| s.len()); - if pos < s.len() { - pos += delim.len(); + if acc.0 > other_pos { + acc.0 = other_pos; + acc.1 = delim.len(); } - s.drain(..pos); - Ok(res) - } else { - let (mut smallest_pos, delimiter_len) = delimiters.iter().fold((s.len(), 0usize), |mut acc, delim| { - let other_pos = s.find(delim).unwrap_or_else(|| s.len()); + acc + }); - if acc.0 > other_pos { - acc.0 = other_pos; - acc.1 = delim.len(); - } - - acc - }); + let res = (&s[..smallest_pos]).parse::<T>().map_err(Error::Parse)?; - let res = (&s[..smallest_pos]).parse::<T>().map_err(Error::Parse)?; - - if smallest_pos < s.len() { - smallest_pos += delimiter_len; - } + if smallest_pos < s.len() { + smallest_pos += delimiter_len; + } - s.drain(..smallest_pos); + s.drain(..smallest_pos); - Ok(res) - } + Ok(res) } /// A utility struct for handling arguments of a command. @@ -555,7 +542,6 @@ impl Args { // TODO: Make this efficient if self.delimiters.len() == 1 as usize { - match self.message.split(&self.delimiters[0]).position(|e| e.parse::<T>().is_ok()) { Some(index) => { let mut vec = self.message.split(self.delimiters[0].as_str()).map(|s| s.to_string()).collect::<Vec<_>>(); |