[swift-evolution] [Pitch] Removing the empty initialiser requirement from RangeReplaceableCollection

Dave Abrahams dabrahams at apple.com
Thu Jul 7 20:14:47 CDT 2016

on Wed Jul 06 2016, Tim Vermeulen <swift-evolution at swift.org> wrote:

> This is a follow up from this swift-users thread: https://lists.swift.org/pipermail/swift-users/Week-of-Mon-20160704/002489.html
> As it stands, RangeReplaceableCollection requires an implementation
> for init(), which is used in the default implementations of (as far as
> I can tell) init(_:), init(repeating:count:) and
> removeAll(keepingCapacity:). The latter of these methods should be
> implementable with removeSubrange(_:) instead.

You can't implement `removeAll(keepingCapacity: false)` with
`removeSubrange(_:)`.  How do you propose to provide the other default

> I would like to propose to *remove* all three initialisers from this
> protocol, because it makes it impossible for some collections to
> conform to it that need extra data for its initialisation, but are
> otherwise perfectly capable of having arbitrary subranges replaced by
> elements from another collection. 

I agree with the goal, but I'd like to see an implementation before I
agree that it's acheivable.

> Those three initialisers could
> either move to a new protocol or simply not be part of any protocol.


> On a similar note, I’d like to have all initialisers of SetAlgebra removed as well, but that might need its own review.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution


More information about the swift-evolution mailing list