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.

Rust Triangle
fn triangle(mut a: Vec<i64>) -> i64 {
    a.sort();
    let c = a.len();
    if c < 3 {
        return 0;
    }

    for i in 0..c - 2 {
        if a[i] > 0 && a[i] > a[i + 2] - a[i + 1] {
            return 1;
        }
    }

    0
}

This sorts the values and checks nearby triples, because a valid triangle only needs one local match after sorting.