Make binding equatable where value is equatable
Some checks failed
Deploy Docs / publish (push) Successful in 46s
SwiftLint / SwiftLint (push) Failing after 2s

This commit is contained in:
david-swift 2024-10-20 13:47:16 +02:00
parent 443b942c46
commit b12c02d391

View File

@ -44,7 +44,7 @@ public struct Binding<Value> {
/// The value. /// The value.
public var wrappedValue: Value { public var wrappedValue: Value {
get { get {
getValue() value
} }
nonmutating set { nonmutating set {
setValue(newValue) setValue(newValue)
@ -64,7 +64,7 @@ public struct Binding<Value> {
} }
/// The closure for getting the value. /// The closure for getting the value.
private let getValue: () -> Value private let value: Value
/// The closure for settings the value. /// The closure for settings the value.
private let setValue: (Value) -> Void private let setValue: (Value) -> Void
/// Handlers observing whether the binding changes. /// Handlers observing whether the binding changes.
@ -86,7 +86,7 @@ public struct Binding<Value> {
/// - get: The closure for getting the value. /// - get: The closure for getting the value.
/// - set: The closure for setting the value. /// - set: The closure for setting the value.
public init(get: @escaping () -> Value, set: @escaping (Value) -> Void) { public init(get: @escaping () -> Value, set: @escaping (Value) -> Void) {
self.getValue = get self.value = get()
self.setValue = set self.setValue = set
} }
@ -112,6 +112,18 @@ public struct Binding<Value> {
} }
extension Binding: Equatable where Value: Equatable {
/// Whether to binding values are equal.
/// - Parameters:
/// - lhs: The first binding.
/// - rhs: The second binding.
public static func == (lhs: Self, rhs: Self) -> Bool {
lhs.value == rhs.value
}
}
/// Extend bindings. /// Extend bindings.
extension Binding where Value: MutableCollection { extension Binding where Value: MutableCollection {