Project Euler #11"numbers in a grid" in Rust
Just like most people not actively involved in the language design, I'm still finding my feet with Rust as well, so take what I have to say with a large grain of salt. 

You don't need to define your own max function: there is one already in the standard library, in std::cmp to be exact:

pub fn max&lt;T: Ord&gt;(v1: T, v2: T) -&gt; T


This will work for anything that has an impl Ord, which int certainly does.

You can avoid the casts if you simply read everything in as a uint in the first place. In fact, it's probably a good idea to split up the code reading and parsing the file from the code that does the calculation. I'd write it something like:

use std::io;

fn read_grid(path: &amp;str) -&gt; Vec&lt;Vec&lt;uint&gt;&gt; {
    let path = Path::new(path);
    let mut file = io::BufferedReader::new(io::File::open(&amp;path));
    let mut lines = file.lines().map(|x| x.unwrap());
    let mut grid: Vec&lt;Vec&lt;uint&gt;&gt; = vec![];

    for line in lines {
        let option = line.as_slice().split(' ').map(|x| -&gt; Option&lt;uint&gt; from_str(x.trim()));
        grid.push(option.filter(|x| x.is_some()).map(|x| x.unwrap()).collect());
    }
    grid
}


This will also skip over any non-convertible values (that is, anything that from_str(x.trim()) gives None from. 

I don't doubt there are still much better ways of writing this, but that's about where I'm at for now.