From cd7fc75b67cf847f9a845b40aa0a7d3f4b68e273 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Wed, 6 Apr 2022 14:19:40 -0400 Subject: [PATCH] update chars_take --- src/misc.rs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/misc.rs b/src/misc.rs index 58450ae..3e0ac4c 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -343,15 +343,25 @@ pub fn step_helper(max_i: usize, min_x: &f64, step: &f64) -> Vec { pub fn chars_take(chars: &[char], take: usize) -> String { let len = chars.len(); assert!(len >= take); - if take == len { - // return `chars` turned into a string if `take == len` - return chars.iter().collect::(); - } else if take == 0 { - // return empty string if `take == 0` - return String::new(); - } - chars.iter().rev().take(take).rev().collect::() + match take { + 0 => { + // return empty string if `take == 0` + return String::new(); + } + 1 => { + // return last character as a string if take == 1 + return chars[len].to_string(); + } + _ if take == len => { + // return `chars` turned into a string if `take == len` + return chars.iter().collect::(); + } + _ => { + // actually do the thing + return chars.iter().rev().take(take).rev().collect::(); + } + } } #[cfg(test)]