openapi-to-rust 0.4.0

Generate strongly-typed Rust structs, HTTP clients, and SSE streaming clients from OpenAPI 3.1 specifications
Documentation
use openapi_to_rust::{CodeGenerator, GeneratorConfig, SchemaAnalyzer};
use serde_json::json;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let spec = json!({
        "openapi": "3.1.0",
        "info": {"title": "Enum Naming Test", "version": "1.0.0"},
        "components": {
            "schemas": {
                "Status": {
                    "type": "string",
                    "enum": [
                        "active",
                        "INACTIVE",
                        "pending-review",
                        "in_progress",
                        "CamelCase",
                        "PascalCase",
                        "kebab-case-long",
                        "snake_case_long",
                        "with spaces",
                        "with.dots",
                        "123numeric",
                        "null",
                        "true",
                        "false",
                        "type",
                        "impl"
                    ],
                    "default": "active"
                }
            }
        }
    });

    let mut analyzer = SchemaAnalyzer::new(spec)?;
    let mut analysis = analyzer.analyze()?;

    let config = GeneratorConfig {
        module_name: "naming_test".to_string(),
        ..Default::default()
    };

    let generator = CodeGenerator::new(config);
    let generated_code = generator.generate(&mut analysis)?;

    println!("Generated enum with PascalCase variants:");
    println!("{generated_code}");

    Ok(())
}