//
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

import Foundation

public extension SetAlgebra {
    /// Returns `true` if `self` and `other` have any elements in common.
    @inlinable
    func intersects(_ other: Self) -> Bool {
        !self.isDisjoint(with: other)
    }

    /// Inserts `element` into the set if `present` is `true`; otherwise removes it.
    ///
    /// Returns the equivalent element that was previously in the set, if there was one.
    @discardableResult
    @inlinable
    mutating func update(_ element: Element, present: Bool) -> Element? {
        if present {
            return self.update(with: element)
        } else {
            return self.remove(element)
        }
    }
}
