session-ios/SessionUtilitiesKit/General/Set+Utilities.swift

46 lines
1.2 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
public extension Set {
mutating func insert(contentsOf value: Set<Element>?) {
guard let value: Set<Element> = value else { return }
value.forEach { self.insert($0) }
}
func inserting(_ value: Element?) -> Set<Element> {
guard let value: Element = value else { return self }
var updatedSet: Set<Element> = self
updatedSet.insert(value)
return updatedSet
}
func inserting(contentsOf value: Set<Element>?) -> Set<Element> {
guard let value: Set<Element> = value else { return self }
var updatedSet: Set<Element> = self
value.forEach { updatedSet.insert($0) }
return updatedSet
}
func removing(_ value: Element?) -> Set<Element> {
guard let value: Element = value else { return self }
var updatedSet: Set<Element> = self
updatedSet.remove(value)
return updatedSet
}
mutating func popRandomElement() -> Element? {
guard let value: Element = randomElement() else { return nil }
self.remove(value)
return value
}
}