ts-rs 12.0.1

generate typescript bindings from rust types
Documentation
#![allow(dead_code)]

use std::{cell::Cell, rc::Rc, sync::Arc};

use ts_rs::{Config, TS};

#[derive(TS)]
#[ts(export, export_to = "nested/")]
struct A {
    x1: Arc<i32>,
    y1: Cell<i32>,
}

#[derive(TS)]
#[ts(export, export_to = "nested/")]
struct B {
    a1: Box<A>,
    #[ts(inline)]
    a2: A,
}

#[derive(TS)]
#[ts(export, export_to = "nested/")]
struct C {
    b1: Rc<B>,
    #[ts(inline)]
    b2: B,
}

#[test]
fn test_nested() {
    let cfg = Config::from_env();
    assert_eq!(
        C::inline(&cfg),
        "{ b1: B, b2: { a1: A, a2: { x1: number, y1: number, }, }, }"
    );
}