Skip to content

Instantly share code, notes, and snippets.

@Koshimizu-Takehito
Last active September 16, 2019 03:10
Show Gist options
  • Save Koshimizu-Takehito/2c53e8e7830df6929d86b5654ebcbe8d to your computer and use it in GitHub Desktop.
Save Koshimizu-Takehito/2c53e8e7830df6929d86b5654ebcbe8d to your computer and use it in GitHub Desktop.
public protocol ResultProtocol {
associatedtype Success
associatedtype Failure: Error
var result: Result<Success, Failure> { get }
}
extension Result: ResultProtocol {
public var result: Result<Success, Failure> {
return self
}
}
public extension Result {
func recover(_ recovery: (Failure) -> Success) -> Result<Success, Never> {
switch self {
case let .success(value):
return .success(value)
case let .failure(error):
return .success(recovery(error))
}
}
}
public extension Result where Failure == Never {
var success: Success {
switch self {
case let .success(value):
return value
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment