Skip to content

Commit 04781a2

Browse files
committed
[Basic] Conform OrderedSet to RangeReplaceableCollection
1 parent 92ea99c commit 04781a2

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

Sources/Basic/OrderedSet.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ public struct OrderedSet<E: Hashable>: Equatable, MutableCollection, RandomAcces
112112
}
113113
}
114114

115+
extension OrderedSet: RangeReplaceableCollection {
116+
mutating public func replaceSubrange<C>(_ subrange: Range<Int>, with newElements: C) where C : Collection, C.Iterator.Element == Element {
117+
self[subrange] = ArraySlice(newElements)
118+
}
119+
}
120+
115121
extension OrderedSet: ExpressibleByArrayLiteral {
116122
/// Create an instance initialized with `elements`.
117123
///

Tests/BasicTests/OrderedSetTests.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ class OrderedSetTests: XCTestCase {
7575
XCTAssert(set.contains(6))
7676
XCTAssertFalse(set.contains(2))
7777
XCTAssert(set.contains(7))
78+
79+
set.replaceSubrange(0..<2, with: [1, 2])
80+
XCTAssertEqual(set.contents, [1, 2, 9])
81+
XCTAssertFalse(set.contains(6))
82+
XCTAssert(set.contains(1))
83+
XCTAssertFalse(set.contains(7))
84+
XCTAssert(set.contains(2))
7885
}
7986

8087
static var allTests = [

0 commit comments

Comments
 (0)