// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation extension Optional { public func map(_ transform: (Wrapped) throws -> U?) rethrows -> U? { switch self { case .some(let value): return try transform(value) default: return nil } } public func asType(_ type: R.Type) -> R? { switch self { case .some(let value): return (value as? R) default: return nil } } public func defaulting(to value: Wrapped) -> Wrapped { return (self ?? value) } }