mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
722 B
Swift
27 lines
722 B
Swift
2 years ago
|
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
|
||
|
public extension Result where Failure == Error {
|
||
|
init(_ closure: @autoclosure () throws -> Success) {
|
||
|
do { self = Result.success(try closure()) }
|
||
|
catch { self = Result.failure(error) }
|
||
|
}
|
||
|
|
||
|
func onFailure(closure: (Failure) -> ()) -> Result<Success, Failure> {
|
||
|
switch self {
|
||
|
case .success: break
|
||
|
case .failure(let failure): closure(failure)
|
||
|
}
|
||
|
|
||
|
return self
|
||
|
}
|
||
|
|
||
|
func successOrThrow() throws -> Success {
|
||
|
switch self {
|
||
|
case .success(let value): return value
|
||
|
case .failure(let error): throw error
|
||
|
}
|
||
|
}
|
||
|
}
|