Rust Tape Equilibrium
fn tape_equilibrium(a: &[i64]) -> i64 {
    let mut first_part = 0i64;
    let mut second_part: i64 = a.iter().sum();
    let mut min = i64::MAX;

    for i in 0..a.len() - 1 {
        first_part += i as i64;
        second_part -= i as i64;
        let difference = (first_part - second_part).abs();
        min = min.min(difference);
    }

    min
}

This keeps left and right running sums and updates the smallest difference at each split point.