Logo

Programming-Idioms

History of Idiom 20 > diff from v42 to v43

Edit summary for version 43 by Doctors:
[Rust] Specifying return isn't required in rust, therefore doesn't need to be specified.

Version 42

2016-11-04, 11:52:36

Version 43

2017-04-03, 18:36:31

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 {
                return 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 {
                Some((i, j));
            }
        }
    }
    
    None
}
Demo URL
http://is.gd/LfOw8P
Demo URL
http://is.gd/LfOw8P