Validations/Sources/Validations/Validators/IsNil.swift

25 lines
584 B
Swift

import Decoded
public struct IsNil<T>: ValidatorExpressible {
public enum Failure: ValidationFailure {
case hasValue, isAbsent
init?<U>(_ success: DecodingSuccess<U>) {
switch success {
case .absent:
self = .isAbsent
case .value:
self = .hasValue
default:
return nil
}
}
}
public let validator: Validator<T>
public init<U>(_ keyPath: KeyPath<T, Decoded<U>>) {
self.validator = .init(keyPath) { Failure($0.success) }
}
}