in starlark/src/stdlib/string.rs [44:68]
fn splitn_whitespace(s: &str, maxsplit: usize) -> Vec<String> {
let mut v = Vec::new();
let mut cur = String::new();
let mut split = 1;
let mut eat_ws = true;
for c in s.chars() {
if split >= maxsplit && !eat_ws {
cur.push(c)
} else if c.is_whitespace() {
if !cur.is_empty() {
v.push(cur);
cur = String::new();
split += 1;
eat_ws = true;
}
} else {
eat_ws = false;
cur.push(c)
}
}
if !cur.is_empty() {
v.push(cur)
}
v
}