specta-swift 0.0.3

Export your Rust types to Swift
Documentation
#![allow(clippy::unwrap_used, dead_code, missing_docs)]

use specta::{Type, Types};
use specta_swift::Swift;

// Simple user management types
#[derive(Type)]
struct User {
    id: u32,
    name: String,
    email: Option<String>,
    role: UserRole,
}

#[derive(Type)]
enum UserRole {
    Guest,
    User { permissions: Vec<String> },
    Admin { level: u8, department: String },
    SuperAdmin { access_level: u32 },
}

#[derive(Type)]
enum ApiResult<T> {
    Success { data: T, status: u16 },
    Error { message: String, code: u32 },
    Loading { progress: f32 },
}

fn main() {
    // Create a type collection
    let types = Types::default()
        .register::<User>()
        .register::<UserRole>()
        .register::<ApiResult<String>>();

    // Export to Swift with default settings
    let swift = Swift::default();
    swift
        .export_to(
            "./examples/generated/SimpleTypes.swift",
            &types,
            specta_serde::Format,
        )
        .unwrap();

    println!("Simple types exported to SimpleTypes.swift");

    // Export with custom settings
    let custom_swift = Swift::new()
        .header("// Generated by MyApp - Custom Header")
        .naming(specta_swift::NamingConvention::SnakeCase)
        .optionals(specta_swift::OptionalStyle::Optional);

    custom_swift
        .export_to(
            "./examples/generated/CustomTypes.swift",
            &types,
            specta_serde::Format,
        )
        .unwrap();

    println!("Custom types exported to CustomTypes.swift");
}