#![allow(clippy::unwrap_used, dead_code, missing_docs)]
use specta::{Type, Types};
use specta_swift::Swift;
#[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() {
let types = Types::default()
.register::<User>()
.register::<UserRole>()
.register::<ApiResult<String>>();
let swift = Swift::default();
swift
.export_to(
"./examples/generated/SimpleTypes.swift",
&types,
specta_serde::Format,
)
.unwrap();
println!("Simple types exported to SimpleTypes.swift");
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");
}