fn turn_ranges<'a>(
messages: &[Message],
spans: &'a [TurnSpan],
) -> Vec<(usize, usize, Option<&'a str>)>Expand description
The message range of every turn spans names, in conversation order, each
with what names it.
The one place a turn’s boundaries are computed. The session record carries every turn and a page carries a window of them, and a second computation is how the two would come to disagree about what a turn is. Ranges rather than turns, so a page renders the window it keeps instead of every turn the conversation holds.