/development/std/str/owned.nct
owned.nct
//! Text operations that materialize independently owned results.
see ./index.nct
see ./search.nct
see ./views.nct
use /string.String
use /vec.Vec
func split(text: &str, separator: &str): Vec<String>! {
if separator.len() == 0 { return empty_separator_error() }
var result: Vec<String> = Vec.empty()
var part_start: usize = 0
while part_start <= text.len() {
let separator_start: usize = find_from(text, separator, part_start) otherwise {
result.push(String.copy(str_subview_unchecked(
text,
part_start,
text.len() - part_start,
)))
break
}
result.push(String.copy(str_subview_unchecked(
text,
part_start,
separator_start - part_start,
)))
part_start = separator_start + separator.len()
}
return move result
}