Least Common Multiple Vect Rust

under Programming Rust Advent of Code

 

Non-recursive least common multiple function for multiple (vec) numbers in Rust.

/// Least common multiple vec of numbers
fn lcm(numbers: Vec<u64>) -> u64 {
    let mut temp = numbers.clone();
    
    // check all the same
    loop {
        let mut same = true;

        for idx in 1..temp.len() {
            if temp[0] != temp[idx] {
                same = false;
                break;
            }
        }

        if same {
            return temp[0];
        }

        // Find lowest index
        match temp.iter().enumerate().min_by(|(_, a), (_, b)| a.cmp(b)).map(|(index, _)| index) {
            Some(idx) => {
                temp[idx] = temp[idx] + numbers[idx];
            },
            None => panic!("Not possible")
        }
    }
}