rewrite option_vec_printer and fix error
This commit is contained in:
parent
cd7fc75b67
commit
a65874cf51
25
src/misc.rs
25
src/misc.rs
@ -303,24 +303,24 @@ fn newtons_method(
|
|||||||
pub fn option_vec_printer<T: ToString>(data: &Vec<Option<T>>) -> String
|
pub fn option_vec_printer<T: ToString>(data: &Vec<Option<T>>) -> String
|
||||||
where
|
where
|
||||||
T: ToString,
|
T: ToString,
|
||||||
T: Clone,
|
|
||||||
{
|
{
|
||||||
let max_i: i32 = (data.len() as i32) - 1;
|
let max_i: i32 = (data.len() as i32) - 1;
|
||||||
"[".to_owned()
|
"[".to_owned()
|
||||||
+ &data
|
+ &data
|
||||||
.iter()
|
.iter()
|
||||||
|
.map(|x| {
|
||||||
|
x.as_ref()
|
||||||
|
.map(|x_1| x_1.to_string())
|
||||||
|
.unwrap_or("None".to_string())
|
||||||
|
})
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, x)| {
|
.map(|(i, x)| {
|
||||||
let mut tmp = match x {
|
|
||||||
Some(inner) => inner.to_string(),
|
|
||||||
_ => "None".to_string(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add comma and space if needed
|
// Add comma and space if needed
|
||||||
if max_i > i as i32 {
|
if max_i > i as i32 {
|
||||||
tmp += ", ";
|
return x + ", ";
|
||||||
|
} else {
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
tmp
|
|
||||||
})
|
})
|
||||||
.collect::<Vec<String>>()
|
.collect::<Vec<String>>()
|
||||||
.concat()
|
.concat()
|
||||||
@ -351,7 +351,7 @@ pub fn chars_take(chars: &[char], take: usize) -> String {
|
|||||||
}
|
}
|
||||||
1 => {
|
1 => {
|
||||||
// return last character as a string if take == 1
|
// return last character as a string if take == 1
|
||||||
return chars[len].to_string();
|
return chars[len - 1].to_string();
|
||||||
}
|
}
|
||||||
_ if take == len => {
|
_ if take == len => {
|
||||||
// return `chars` turned into a string if `take == len`
|
// return `chars` turned into a string if `take == len`
|
||||||
@ -459,7 +459,12 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn chars_take_test() {
|
fn chars_take_test() {
|
||||||
let values = HashMap::from([(("test", 2), "st"), (("cool text", 4), "text")]);
|
let values = HashMap::from([
|
||||||
|
(("test", 2), "st"),
|
||||||
|
(("cool text", 4), "text"),
|
||||||
|
(("aaa", 0), ""),
|
||||||
|
(("aaab", 1), "b"),
|
||||||
|
]);
|
||||||
|
|
||||||
for ((in_str, i), value) in values {
|
for ((in_str, i), value) in values {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user