Introduction
Protocol extensions let you add common behavior to many types at once, so you don't have to write the same code again and again.
When you want many different types to share the same function without repeating code.
When you want to add default behavior to a protocol so all types that follow it get that behavior automatically.
When you want to keep your code clean and organized by grouping shared functions in one place.
When you want to add helper methods to a protocol without changing each type that uses it.