import Bindings import XCTestDynamicOverlay public struct InitializeBackup { public var run: (Int, Int, String, UpdateBackupFunc) throws -> Backup public func callAsFunction( e2eId: Int, udId: Int, password: String, callback: UpdateBackupFunc ) throws -> Backup { try run(e2eId, udId, password, callback) } } extension InitializeBackup { public static let live = InitializeBackup { e2eId, udId, password, callback in var error: NSError? let bindingsBackup = BindingsInitializeBackup( e2eId, udId, password, callback.makeBindingsUpdateBackupFunc(), &error ) if let error = error { throw error } guard let bindingsBackup = bindingsBackup else { fatalError("BindingsInitializeBackup returned `nil` without providing error") } return .live(bindingsBackup) } } extension InitializeBackup { public static let unimplemented = InitializeBackup( run: XCTUnimplemented("\(Self.self)") ) }