Skip to content

Commit 618481f

Browse files
committed
Add RESPValueConvertible conformance to Optional
1 parent 5c32b97 commit 618481f

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

Sources/NIORedis/RESP/RESPValueConvertible.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,20 @@ extension Array: RESPValueConvertible where Element: RESPValueConvertible {
121121
return RESPValue.array(elements)
122122
}
123123
}
124+
125+
extension Optional: RESPValueConvertible where Wrapped: RESPValueConvertible {
126+
public init?(_ value: RESPValue) {
127+
guard !value.isNull else { return nil }
128+
guard let wrapped = Wrapped(value) else { return nil }
129+
130+
self = .some(wrapped)
131+
}
132+
133+
/// See `RESPValueConvertible.convertedToRESPValue()`.
134+
public func convertedToRESPValue() -> RESPValue {
135+
switch self {
136+
case .none: return .null
137+
case let .some(value): return value.convertedToRESPValue()
138+
}
139+
}
140+
}

0 commit comments

Comments
 (0)