pub trait Region {
// Required methods
fn left(&self) -> i32;
fn top(&self) -> i32;
fn width(&self) -> u32;
fn height(&self) -> u32;
// Provided methods
fn right(&self) -> i32 { ... }
fn bottom(&self) -> i32 { ... }
fn is_square(&self) -> bool { ... }
fn contains(&self, x: i32, y: i32) -> bool { ... }
fn center(&self) -> Point2<i32> { ... }
fn top_left(&self) -> Point2<i32> { ... }
fn square(&self) -> u32 { ... }
}