> On 8 Jul 2016, at 03:18, Dave Abrahams via swift-evolution > <[email protected]> wrote: > > > on Thu Jul 07 2016, Haravikk <[email protected]> wrote: > >>> On 7 Jul 2016, at 15:57, Karl via swift-evolution >>> <[email protected]> wrote: >>> >>> I believe the idea of RRC is that all you need to implement is the >>> empty initialiser and replaceSubrange(), and everything else >>> (e.g. Append, insert) is implemented in terms of those. Even the >> >>> initialiser which takes existing collection just initialises and >>> empty one and appends the existing collection (I.e. Calling >>> replaceSubrange). >>> >>> If I understand you correctly, it will not be possible to initialise >>> a generic RRC any more, will it? Because that RRC may need >>> additional information (e.g. A maximum buffer size if it stores its >>> data in multiple discrete buffers) which you can’t provide >>> generically. >>> >>> Maybe we could have a true copy-constructor instead? That is, >>> replace init<C:Collection>(_:) with init(_: Self), so that it could >>> take any additional arguments from that other instance? >> >> A copying initialiser could work, but it should probably have a >> parameter for the type of copy to create (empty, shallow copy and deep >> copy for example), as I suspect it's the empty copy that >> RangeReplaceableCollection needs more than anything. Otherwise it >> shouldn't need initialisers on the protocol. This however is something >> that could (and should) be moved out into its own protocol I think, >> with RangeReplaceableCollection simply conforming that. > > Maybe RRC should have: > > func emptyCopy() -> Self > > ? > -- > Dave > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
Perhaps we should have a shallow-copy protocol for Collections in general? I was using the initialiser to create a copy, but that’s not really anything to do with a “range-replaceable collection” and there may be non-RRCs which you want to take shallow copies of for similar composition guarantees. Karl _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
