specta-swift 0.0.3

Export your Rust types to Swift
Documentation
// This file has been generated by Specta. DO NOT EDIT.
import Foundation

public enum api_response<T> {
    case success(api_responseSuccessData)
    case error(api_responseErrorData)
    case loading(api_responseLoadingData)
}
public struct api_responseSuccessData: Codable {
    public let data: T
    public let status_code: UInt16
}

public struct api_responseErrorData: Codable {
    public let message: String
    public let error_code: UInt32
}

public struct api_responseLoadingData: Codable {
    public let progress: Float
}

// MARK: - api_response Codable Implementation
extension api_response: Codable {
    private enum CodingKeys: String, CodingKey {
        case success = "Success"
        case error = "Error"
        case loading = "Loading"
    }

    public init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        
        if container.allKeys.count != 1 {
            throw DecodingError.dataCorrupted(
                DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Invalid number of keys found, expected one.")
            )
        }

        let key = container.allKeys.first!
        switch key {
        case .success:
            let data = try container.decode(api_responseSuccessData.self, forKey: .success)
            self = .success(data)
        case .error:
            let data = try container.decode(api_responseErrorData.self, forKey: .error)
            self = .error(data)
        case .loading:
            let data = try container.decode(api_responseLoadingData.self, forKey: .loading)
            self = .loading(data)
        }
    }

    public func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        
        switch self {
        case .success(let data):
            try container.encode(data, forKey: .success)
        case .error(let data):
            try container.encode(data, forKey: .error)
        case .loading(let data):
            try container.encode(data, forKey: .loading)
        }
    }
}


public struct generic_container<T, U>: Codable {
    public let primary: T
    public let secondary: U
    public let metadata: [(String, String)]?
}

/// Comprehensive example showcasing ALL configuration options for specta-swift
/// 
/// This example demonstrates every configuration option available in the Swift exporter,
/// showing how different settings affect the generated Swift code.
/// Sample types for demonstration
public struct user: Codable {
    public let user_id: UInt32
    public let full_name: String
    public let email_address: String?
    public let is_verified: Bool
}