diff options
Diffstat (limited to '')
-rw-r--r-- | src/rectangle.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/rectangle.rs b/src/rectangle.rs new file mode 100644 index 00000000..ca224dad --- /dev/null +++ b/src/rectangle.rs @@ -0,0 +1,30 @@ +use crate::Point; + +/// A generic rectangle. +#[derive(Debug, PartialEq, Eq, Copy, Clone)] +pub struct Rectangle<T> { + /// X coordinate of the top-left corner. + pub x: T, + + /// Y coordinate of the top-left corner. + pub y: T, + + /// Width of the rectangle. + pub width: T, + + /// Height of the rectangle. + pub height: T, +} + +impl Rectangle<f32> { + /// Returns true if the given [`Point`] is contained in the [`Rectangle`]. + /// + /// [`Point`]: type.Point.html + /// [`Rectangle`]: struct.Rectangle.html + pub fn contains(&self, point: Point) -> bool { + self.x <= point.x + && point.x <= self.x + self.width + && self.y <= point.y + && point.y <= self.y + self.height + } +} |