secant-ios-wallet/secant/Util/Clamped.swift

32 lines
690 B
Swift
Raw Normal View History

//
// Clamped.swift
// secant-testnet
//
// Created by Francisco Gindre on 10/20/21.
//
// credits: https://iteo.medium.com/swift-property-wrappers-how-to-use-them-right-77095817d1b
import Foundation
/**
Limits a value to an enclosing range
*/
@propertyWrapper
2021-10-21 08:40:35 -07:00
struct Clamped<Value: Comparable> {
var value: Value
let range: ClosedRange<Value>
var wrappedValue: Value {
get {
min(
max(range.lowerBound, value),
2021-10-21 08:40:35 -07:00
range.upperBound
)
}
set { value = newValue }
}
2021-10-21 08:40:35 -07:00
init(wrappedValue: Value, _ range: ClosedRange<Value>) {
self.value = wrappedValue
self.range = range
}
}