Start learning free

LESSON 611 OF 642 · OBJECT-ORIENTED PROGRAMMING

Shape Area in Rust

Practice

You write the common part of three shapes, and each shape's area.

Rust has no abstract classes. As in the abstract-classes lesson, a trait plays that role. The trait Shape has two methods with no body:

  • area returns the shape's area as an i32.
  • name returns the shape's name as a String.

It also has a default method, describe. It returns a text such as Square with area 25. That is the name, then with area, then the area.

Three structs implement Shape:

  • Rectangle has a width and a height. Its area is width × height.
  • Square has a side. Its area is side × side.
  • RightTriangle has two sides a and b that meet at a right angle. Its area is a × b / 2, rounded down.

Their new functions and name methods are already written. You write each area.

For each shape, the harness prints describe() on its own line.

 

Example 1:

Input: Rectangle::new(3, 4), Square::new(5), RightTriangle::new(3, 4)
Output:
Rectangle with area 12
Square with area 25
Right triangle with area 6

Explanation: 3 × 4 = 12 and 5 × 5 = 25.
The triangle is half of 3 × 4, so 6.

Example 2:

Input: RightTriangle::new(3, 5), Square::new(1)
Output:
Right triangle with area 7
Square with area 1

Explanation: Half of 3 × 5 is 7.5.
It rounds down to 7.

Example 3:

Input: Rectangle::new(1, 7), RightTriangle::new(1, 1)
Output:
Rectangle with area 7
Right triangle with area 0

Explanation: A 1 by 7 rectangle has area 7.
Half of 1 × 1 rounds down to 0.

 

Constraints:

  • 1 to 100 shapes.
  • Each size is a whole number from 1 to 10,000.
STEP 1 OF 6
    Ctrl + Enter to check

    Shape Area in Rust

    Keep going with Rust500+ step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free