Logo

Programming-Idioms

History of Idiom 20 > diff from v50 to v51

Edit summary for version 51 by Sh4rK:
[Rust] Add missing return.

Version 50

2019-09-26, 15:22:58

Version 51

2019-09-26, 15:33:13

Idiom #20 Return two values

Implement a function search which looks for item x in a 2D matrix m.
Return indices i, j of the matching cell.
Think of the most idiomatic way in the language to return the two values at the same time.

Idiom #20 Return two values

Implement a function search which looks for item x in a 2D matrix m.
Return indices i, j of the matching cell.
Think of the most idiomatic way in the language to return the two values at the same time.

Code
fn search<T: Eq>(m: &Vec<Vec<T>>, x: &T) -> Option<(usize, usize)> {
    for (i, row) in m.iter().enumerate() {
        for (j, column) in row.iter().enumerate() {
            if *column == *x {
                Some((i, j));
            }
        }
    }
    
    None
}
Code
fn search<T: Eq>(m: &Vec<Vec<T>>, x: &T) -> Option<(usize, usize)> {
    for (i, row) in m.iter().enumerate() {
        for (j, column) in row.iter().enumerate() {
            if *column == *x {
                return Some((i, j));
            }
        }
    }

    None
}
Demo URL
http://is.gd/LfOw8P
Demo URL
http://is.gd/LfOw8P