///|
fn boundary_strings(s : String, boundaries : Array[Int]) -> Array[String] {
let text = @text.scan(s)
let result = []
let mut start_unit = 0
let mut scalar = 0
for i = 1; i < boundaries.length(); i = i + 1 {
while text.bytes[scalar] < boundaries[i] {
scalar += 1
}
result.push(s[start_unit:text.units[scalar]].to_owned())
start_unit = text.units[scalar]
}
result
}