# [−][src]Struct geo_types::Rect

`pub struct Rect<T> where    T: CoordNum,  { /* fields omitted */ }`

An axis-aligned bounded 2D rectangle whose area is defined by minimum and maximum `Coordinate`s.

The constructors and setters ensure the maximum `Coordinate` is greater than or equal to the minimum. Thus, a `Rect`s width, height, and area is guaranteed to be greater than or equal to zero.

Note. While `Rect` implements `MapCoords` and `RotatePoint` algorithmic traits, the usage is expected to maintain the axis alignment. In particular, only rotation by integer multiples of 90 degrees, will preserve the original shape. In other cases, the min, and max points are rotated or transformed, and a new rectangle is created (with coordinate swaps to ensure min < max).

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 0., y: 4.},
Coordinate { x: 3., y: 10.},
);

assert_eq!(3., rect.width());
assert_eq!(6., rect.height());
assert_eq!(
Coordinate { x: 1.5, y: 7. },
rect.center()
);```

## Implementations

### `impl<T: CoordNum> Rect<T>`[src]

#### `pub fn new<C>(c1: C, c2: C) -> Rect<T> where    C: Into<Coordinate<T>>, `[src]

Creates a new rectangle from two corner coordinates.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 10., y: 20. },
Coordinate { x: 30., y: 10. }
);
assert_eq!(rect.min(), Coordinate { x: 10., y: 10. });
assert_eq!(rect.max(), Coordinate { x: 30., y: 20. });```

#### `pub fn try_new<C>(c1: C, c2: C) -> Result<Rect<T>, InvalidRectCoordinatesError> where    C: Into<Coordinate<T>>, `[src]

👎 Deprecated since 0.6.2:

Use `Rect::new` instead, since `Rect::try_new` will never Error

#### `pub fn min(self) -> Coordinate<T>`[src]

Returns the minimum `Coordinate` of the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 5., y: 5. },
Coordinate { x: 15., y: 15. },
);

assert_eq!(rect.min(), Coordinate { x: 5., y: 5. });```

#### `pub fn set_min<C>(&mut self, min: C) where    C: Into<Coordinate<T>>, `[src]

Set the `Rect`’s minimum coordinate.

# Panics

Panics if `min`’s x/y is greater than the maximum coordinate’s x/y.

#### `pub fn max(self) -> Coordinate<T>`[src]

Returns the maximum `Coordinate` of the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 5., y: 5. },
Coordinate { x: 15., y: 15. },
);

assert_eq!(rect.max(), Coordinate { x: 15., y: 15. });```

#### `pub fn set_max<C>(&mut self, max: C) where    C: Into<Coordinate<T>>, `[src]

Set the `Rect`’s maximum coordinate.

# Panics

Panics if `max`’s x/y is less than the minimum coordinate’s x/y.

#### `pub fn width(self) -> T`[src]

Returns the width of the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 5., y: 5. },
Coordinate { x: 15., y: 15. },
);

assert_eq!(rect.width(), 10.);```

#### `pub fn height(self) -> T`[src]

Returns the height of the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 5., y: 5. },
Coordinate { x: 15., y: 15. },
);

assert_eq!(rect.height(), 10.);```

#### `pub fn to_polygon(self) -> Polygon<T>`[src]

Create a `Polygon` from the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect, polygon};

let rect = Rect::new(
Coordinate { x: 0., y: 0. },
Coordinate { x: 10., y: 20. },
);

assert_eq!(
rect.to_polygon(),
polygon![
(x: 0., y: 0.),
(x: 0., y: 20.),
(x: 10., y: 20.),
(x: 10., y: 0.),
(x: 0., y: 0.),
],
);```

### `impl<T: CoordFloat> Rect<T>`[src]

#### `pub fn center(self) -> Coordinate<T>`[src]

Returns the center `Coordinate` of the `Rect`.

# Examples

```use geo_types::{Coordinate, Rect};

let rect = Rect::new(
Coordinate { x: 5., y: 5. },
Coordinate { x: 15., y: 15. },
);

assert_eq!(
rect.center(),
Coordinate { x: 10., y: 10. }
);```

## Blanket Implementations

### `impl<T> ToOwned for T where    T: Clone, `[src]

#### `type Owned = T`

The resulting type after obtaining ownership.

### `impl<T, U> TryFrom<U> for T where    U: Into<T>, `[src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

### `impl<T, U> TryInto<U> for T where    U: TryFrom<T>, `[src]

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

The type returned in the event of a conversion error.