use color::Color;

pub struct Program {
    image: Vec<Vec<Color>>,
}

impl Program {
    pub fn get(&self, coords: (usize, usize)) -> Option<Color> {
        unimplemented!();
    }

    pub fn neighbors(&self, coords: (usize, usize)) -> &[Color] {
        unimplemented!();
    }

    pub fn neighbors_with_coords(&self, coords: (usize, usize)) -> &[(usize, usize, Color)] {
        unimplemented!();
    }
}

use color::Color;

pub struct Program {
    image: Vec<Vec<Color>>,
}

impl Program {
    pub fn get(coords: (usize, usize)) -> Option<Color> {
        unimplemented!();
    }

    pub fn neighbors(coords: (usize, usize)) -> &[Color] {
        unimplemented!();
    }

    pub fn neighbors_with_coords(coords: (usize, usize)) -> &[(usize, usize, Color)] {
        unimplemented!();
    }
}

--- 
+++ 
@@ -5,15 +5,15 @@
 }
 
 impl Program {
-    pub fn get(coords: (usize, usize)) -> Option<Color> {
+    pub fn get(&self, coords: (usize, usize)) -> Option<Color> {
         unimplemented!();
     }
 
-    pub fn neighbors(coords: (usize, usize)) -> &[Color] {
+    pub fn neighbors(&self, coords: (usize, usize)) -> &[Color] {
         unimplemented!();
     }
 
-    pub fn neighbors_with_coords(coords: (usize, usize)) -> &[(usize, usize, Color)] {
+    pub fn neighbors_with_coords(&self, coords: (usize, usize)) -> &[(usize, usize, Color)] {
         unimplemented!();
     }
 }
Add missing `&self` parameters to `Program` methods

D'oh.
