diff --git a/Sources/Model/Data Flow/Binding.swift b/Sources/Model/Data Flow/Binding.swift index 2431c85..c11b605 100644 --- a/Sources/Model/Data Flow/Binding.swift +++ b/Sources/Model/Data Flow/Binding.swift @@ -44,7 +44,7 @@ public struct Binding { /// The value. public var wrappedValue: Value { get { - getValue() + value } nonmutating set { setValue(newValue) @@ -64,7 +64,7 @@ public struct Binding { } /// The closure for getting the value. - private let getValue: () -> Value + private let value: Value /// The closure for settings the value. private let setValue: (Value) -> Void /// Handlers observing whether the binding changes. @@ -86,7 +86,7 @@ public struct Binding { /// - get: The closure for getting the value. /// - set: The closure for setting the value. public init(get: @escaping () -> Value, set: @escaping (Value) -> Void) { - self.getValue = get + self.value = get() self.setValue = set } @@ -112,6 +112,18 @@ public struct Binding { } +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. extension Binding where Value: MutableCollection {