Project Euler #2: Even Fibonacci numbers

This article is part of a series where I'll be diving head first into the Project Euler puzzles. I want to document the challenge of solving such a puzzle and how I got to the answer. I want to prefix this by stating that I can't cheat for any of these challenges; with that I mean I can't look up any other implementations online. After the implementation, I will validate the answer by using this document or a similar sheet.

In this article I'll be solving: Project Euler #2.

This article features only an answer, because I’ve started writing from problem 14.

fn fibonacci_even(max: i32) -> i32 {
    let mut far = vec![1, 2];
    let mut total = far[1];

    loop {
        let n = far.remove(0);
        let m = far[0] + n;
        far.push(m);

        if m % 2 == 0 {
            total += m
        }

        if m >= max {
            break;
        }
    }
    total
}

#[test]
fn even_fibonnaci_numbers_test() {
    assert_eq!(fibonacci_even(8), 10);
    assert_eq!(fibonacci_even(55), 44);
    assert_eq!(fibonacci_even(4000000), 4613732);
}

The full solution is available on GitHub.

55545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321