Rect

Struct Rect 

Source
pub struct Rect<T = u32> {
    pub left: Option<T>,
    pub top: Option<T>,
    pub right: Option<T>,
    pub bottom: Option<T>,
}
Expand description

An axis-aligned rectangular region.

Each of the four sides of a Rect can be either bounded (Some(_)) or unbounded (None). If bounded, the start bounds (left and top) are always inclusive, and the end bounds (right and bottom) are always exclusive.

If left and right are unbounded and rightleft, the Rect is considered empty. The same holds for top and bottom. This matches the semantics of the standard Range type.

Fields§

§left: Option<T>

The left bound of self, if any.

§top: Option<T>

The top bound of self, if any.

§right: Option<T>

The right bound of self, if any.

§bottom: Option<T>

The bottom bound of self, if any.

Implementations§

Source§

impl<T: Copy> Rect<T>

Source

pub fn width(&self) -> Option<T::Output>
where T: Ord + Sub,

Returns the width of self, or None if horizontally unbounded.

Returns 0 if right <= left.

Source

pub fn height(&self) -> Option<T::Output>
where T: Ord + Sub,

Returns the height of self, or None if vertically unbounded.

Returns 0 if bottom <= top.

Source

pub fn is_empty(&self) -> bool
where T: PartialOrd,

Returns whether self contains no points.

Source

pub fn contains(&self, x: T, y: T) -> bool
where T: PartialOrd,

Returns whether the point (x, y) is contained within self.

Source

pub fn bounds(&self) -> [impl RangeBounds<T>; 2]

Returns the horizontal and vertical extents of self.

Source

pub fn intersect(&self, other: &Self) -> Self
where T: Ord,

Returns the intersection of self and other.

The intersection is a rect that contains exactly the points contained by both self and other. If the input rects are disjoint, i.e. contain no common points, the result is an empty rect with unspecified top-left coordinates.

Trait Implementations§

Source§

impl<T: Clone> Clone for Rect<T>

Source§

fn clone(&self) -> Rect<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Rect<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Default> Default for Rect<T>

Source§

fn default() -> Rect<T>

Returns the “default value” for a type. Read more
Source§

impl<H: RangeBounds<u32>, V: RangeBounds<u32>> From<(H, V)> for Rect<u32>

Source§

fn from((horiz, vert): (H, V)) -> Self

Creates a Rect from two ranges specifying the horizontal and vertical extents of the Rect respectively.

Source§

impl From<Range<Point<[u32; 2], Real<2>>>> for Rect<u32>

Source§

fn from(r: Range<Point2u>) -> Self

Creates a Rect from two points designating the left-top and right-bottom corners of the Rect.

Source§

impl<T> From<RangeFull> for Rect<T>

Source§

fn from(_: RangeFull) -> Self

Creates a Rect with all sides unbounded.

Source§

impl<T: PartialEq> PartialEq for Rect<T>

Source§

fn eq(&self, other: &Rect<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Copy> Copy for Rect<T>

Source§

impl<T: Eq> Eq for Rect<T>

Source§

impl<T> StructuralPartialEq for Rect<T>

Auto Trait Implementations§

§

impl<T> Freeze for Rect<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Rect<T>
where T: RefUnwindSafe,

§

impl<T> Send for Rect<T>
where T: Send,

§

impl<T> Sync for Rect<T>
where T: Sync,

§

impl<T> Unpin for Rect<T>
where T: Unpin,

§

impl<T> UnwindSafe for Rect<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.