Add RESPValueConvertible conformance to Optional

This commit is contained in:
Nathan Harris
2019-03-18 18:57:59 -07:00
parent 5c32b97a0c
commit 618481fe1e
@@ -121,3 +121,20 @@ extension Array: RESPValueConvertible where Element: RESPValueConvertible {
return RESPValue.array(elements)
}
}
extension Optional: RESPValueConvertible where Wrapped: RESPValueConvertible {
public init?(_ value: RESPValue) {
guard !value.isNull else { return nil }
guard let wrapped = Wrapped(value) else { return nil }
self = .some(wrapped)
}
/// See `RESPValueConvertible.convertedToRESPValue()`.
public func convertedToRESPValue() -> RESPValue {
switch self {
case .none: return .null
case let .some(value): return value.convertedToRESPValue()
}
}
}