mirror of
https://github.com/AU-COVIDSafe/mobile-ios.git
synced 2025-01-19 01:06:35 +00:00
36 lines
809 B
Swift
36 lines
809 B
Swift
|
// Copyright © 2020 Australian Government All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
|
||
|
public typealias VoidOutcome = Outcome<Void>
|
||
|
|
||
|
public enum Outcome<T> {
|
||
|
case success(T)
|
||
|
case error(Error)
|
||
|
case cancelled
|
||
|
|
||
|
public init(resultOrNil: T?, errorOrNil: Error?) {
|
||
|
if let error = errorOrNil {
|
||
|
self = .error(error)
|
||
|
return
|
||
|
}
|
||
|
if let result = resultOrNil {
|
||
|
self = .success(result)
|
||
|
return
|
||
|
}
|
||
|
self = .error(ProgrammerError.encounteredNilResultAndNilErrorOutcome)
|
||
|
}
|
||
|
|
||
|
public init<A>(somethingOrNothing: A?, resultIfSomething: T, errorIfNothing: Error) {
|
||
|
if somethingOrNothing != nil {
|
||
|
self = .success(resultIfSomething)
|
||
|
} else {
|
||
|
self = .error(errorIfNothing)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
enum ProgrammerError: Error {
|
||
|
case encounteredNilResultAndNilErrorOutcome
|
||
|
}
|