docs: def intersection(self, rect, edges=False):
          """
          Returns the rectangle resulting of the intersection between this and another 
          rectangle. If the rectangles are only touching by their edges, and the 
          argument 'edges' is True the rectangle returned will have an area of 0.
          Returns None if there is no intersection.
          
          Arguments:
               rect (Rectangle): The other rectangle.
               edges (bool): If true touching edges are considered an intersection, and
               a rectangle of 0 height or width will be returned
  
          Returns:
              Rectangle: Intersection.
              None: There was no intersection.
          """
          if not self.intersects(rect, edges=edges):
              return None
          
          bottom = max(self.bottom, rect.bottom)
          left = max(self.left, rect.left)
          top = min(self.top, rect.top)
          right = min(self.right, rect.right)
  
          return Rectangle(left, bottom, right-left, top-bottom)