Цель состоит в том, чтобы обрезать строку по строкам и выбрать именно ту строку, где находится указанный c диапазон. Как это можно сделать с помощью итераторов в ржавчине?
let my_string = "Some small words, they're this.\nTogether";
let stripped_lines = ["Some small words, they\'re this.", "Together"];
// Important word where the char is located with inclusive range
range = Range {start: 33, end:41}
let chosen_line = "Together"
\n
считается разделителем для новой строки, а \
не учитывается, так как это форматирование.
То, что я пробовал до сих пор:
let chosen_line = my_string.lines()
.enumerate()
.map(|(lineno, content)| (lineno + 1, content))
.skip_while(|(lineno, _)| range.start < lineno)
.take_while(|(lineno, _)| range.end >= lineno)
.map(|(_, content)| content)
.collect::<Vec<&'_ str>>();
Это не сработало. Я не знаю, как объединить logi c перечисления строк и выбора ограничения char.
Учтите, что диапазон ограничен определенной строкой c и никогда не будет находиться между строками (начальная и конечная в разных строках)