update chars_take

This commit is contained in:
Simon Gardling 2022-04-06 14:19:40 -04:00
parent e813ad3d39
commit cd7fc75b67

View File

@ -343,15 +343,25 @@ pub fn step_helper(max_i: usize, min_x: &f64, step: &f64) -> Vec<f64> {
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::<String>();
} else if take == 0 {
// return empty string if `take == 0`
return String::new();
}
chars.iter().rev().take(take).rev().collect::<String>()
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::<String>();
}
_ => {
// actually do the thing
return chars.iter().rev().take(take).rev().collect::<String>();
}
}
}
#[cfg(test)]