fn match_blanks_between(
    current: (LineNumber, LineNumber),
    prev: (LineNumber, LineNumber),
    lhs_lines: &[&str],
    rhs_lines: &[&str],
) -> Vec<(Option<LineNumber>, Option<LineNumber>)> {
    let (mut current_lhs, mut current_rhs) = current;
    if current_lhs.0 == 0 || current_rhs.0 == 0 {
        return vec![];
    }

    current_lhs = (current_lhs.0 - 1).into();
    current_rhs = (current_rhs.0 - 1).into();

    let mut res = vec![];
    while current_lhs > prev.0 && current_rhs > prev.1 {
        if lhs_lines[current_lhs.0] == "" && rhs_lines[current_rhs.0] == "" {
            res.push((Some(current_lhs), Some(current_rhs)));

            current_lhs = (current_lhs.0 - 1).into();
            current_rhs = (current_rhs.0 - 1).into();
        } else {
            break;
        }
    }

    res.reverse();
    res
}
/// If the lines immediately before `current` are blank on both sides,
/// return the line numbers of those blank lines.
If the lines immediately before `current` are blank on both sides,
return the line numbers of those blank lines.
If the lines immediately before ` current ` are blank on both sides return the line numbers of those blank lines .
fn match_blanks_between(
    current: (LineNumber, LineNumber),
    prev: (LineNumber, LineNumber),
    lhs_lines: &[&str],
    rhs_lines: &[&str],
) -> Vec<(Option<LineNumber>, Option<LineNumber>)> {
    let (mut current_lhs, mut current_rhs) = current;
    if current_lhs.0 == 0 || current_rhs.0 == 0 {
        return vec![];
    }
    current_lhs = (current_lhs.0 - 1).into();
    current_rhs = (current_rhs.0 - 1).into();
    let mut res = vec![];
    while current_lhs > prev.0 && current_rhs > prev.1 {
        if lhs_lines[current_lhs.0] == "" && rhs_lines[current_rhs.0] == "" {
            res.push((Some(current_lhs), Some(current_rhs)));
            current_lhs = (current_lhs.0 - 1).into();
            current_rhs = (current_rhs.0 - 1).into();
        } else {
            break;
        }
    }
    res.reverse();
    res
}
fn match_blanks_between ( current : ( LineNumber , LineNumber ) , prev : ( LineNumber , LineNumber ) , lhs_lines : & [ & str ] , rhs_lines : & [ & str ] , ) -> Vec < ( Option < LineNumber > , Option < LineNumber > ) > { let ( mut current_lhs , mut current_rhs ) = current ; if current_lhs . 0 == 0 || current_rhs . 0 == 0 { return vec ! [ ] ; } current_lhs = ( current_lhs . 0 - 1 ) . into ( ) ; current_rhs = ( current_rhs . 0 - 1 ) . into ( ) ; let mut res = vec ! [ ] ; while current_lhs > prev . 0 && current_rhs > prev . 1 { if lhs_lines [ current_lhs . 0 ] == " " && rhs_lines [ current_rhs . 0 ] == " " { res . push ( ( Some ( current_lhs ) , Some ( current_rhs ) ) ) ; current_lhs = ( current_lhs . 0 - 1 ) . into ( ) ; current_rhs = ( current_rhs . 0 - 1 ) . into ( ) ; } else { break ; } } res . reverse ( ) ; res }
If the lines immediately before `current` are blank on both sides,
return the line numbers of those blank lines.
If the lines immediately before ` current ` are blank on both sides return the line numbers of those blank lines .
current
(LineNumber, LineNumber)
prev
(LineNumber, LineNumber)
lhs_lines
&[&str]
rhs_lines
&[&str]