alef 0.115.2

Opinionated polyglot binding generator for Rust libraries
Documentation
import Foundation

struct BridgeString {
    let value: String
    func toString() -> String { value }
}
enum RustBridge {
    struct AlefBridgeError: Error {
        let milliseconds: Int64
        func message() -> BridgeString { BridgeString(value: "delayed") }
        func kind() -> BridgeString { BridgeString(value: "Delayed") }
        func status() -> Int64 { -1 }
        func retryAfterMs() -> Int64 { milliseconds }
        func payload() -> BridgeString { BridgeString(value: "{}") }
        func errorType() -> BridgeString { BridgeString(value: "SampleError") }
    }
}

{{ declaration }}

let cases: [Int64] = [.min, -1, 0, 37, .max]
for milliseconds in cases {
    guard let error = SampleError(bridgeError: RustBridge.AlefBridgeError(milliseconds: milliseconds)),
          case .delayed(message: _, retryAfter: let duration) = error else {
        fatalError("generated bridge initializer must preserve the typed case")
    }
    if milliseconds < 0 {
        precondition(duration == nil, "missing duration must remain nil")
    } else {
        precondition(duration == Duration.milliseconds(milliseconds), "present duration must retain its value")
    }
}
print("verified \(cases.count) duration cases")