Pitch: remove some customization points from the std lib collection protocols

“Customization point” means one of two things:

Sometimes it refers to a protocol requirement in general, because conforming types get to customize the implementation.

More often though, it refers to a protocol requirement which has a default implementation, because conforming types can customize the implementation if they want to (but they don’t have to).

Both of the above are dynamically dispatched (because the method is defined within the body of the protocol). This contrasts with protocol extension methods (that are not part of the protocol body itself) which use static dispatch and so their behavior cannot be customized by conforming types.

6 Likes