import SwiftUI public struct UnwrapView: View { private let some: () -> Some? private let none: () -> None? public init(value: Value?, some: @escaping (Value) -> Some, none: @escaping () -> None) { self.some = { value.map(some) } self.none = { value == nil ? none() : nil } } public var body: some View { Group { some() none() } } } struct UnwrapView_Previews: PreviewProvider { static var previews: some View { Group { UnwrapView(value: "Some", some: Text.init, none: { Color.red }) .previewLayout(.fixed(width: 200, height: 50)) .previewDisplayName("some") UnwrapView(value: nil, some: Text.init, none: { Color.red }) .previewLayout(.fixed(width: 200, height: 50)) .previewDisplayName("none") } } }