Thank you for this feedback. The let wrapped properties transformation has some resemblance to what you've described for Clampped. I will update the pitch to make this clearer as well.
For UnitRectangle with let wrapped height and width, the transformation with the current implementation is:
internal struct UnitRectangle {
@SmallNumber internal let height: Int {
get {
return self._height.wrappedValue
}
}
private let _height: SmallNumber = SmallNumber(wrappedValue: 1)
@SmallNumber internal let width: Int {
get {
return self._width.wrappedValue
}
}
private let _width: SmallNumber = SmallNumber(wrappedValue: 1)
internal init() {}
}
where 1 is assigned via SmallNumber's wrappedValue init:
_height = SmallNumber(wrappedValue: 1)
_width = SmallNumber(wrappedValue: 1)