#![allow(dead_code, clippy::box_collection)] use std::borrow::Cow; use ts_rs::TS; #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct Newtype(Vec>); #[test] fn newtype() { assert_eq!(Newtype::inline(), "Array"); } #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct NewtypeNested(Vec>); #[test] fn newtype_nested() { assert_eq!(NewtypeNested::inline(), "Array>"); } #[test] fn alias() { type Alias = Vec; assert_eq!(Alias::inline(), "Array"); } #[test] fn alias_nested() { type Alias = Vec>; assert_eq!(Alias::inline(), "Array>"); } #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct Struct { a: Box>, b: (Vec, Vec), c: [Vec; 3], } #[test] fn named() { assert_eq!( Struct::inline(), "{ a: Array, b: [Array, Array], c: [Array, Array, Array], }" ); } #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct StructNested { a: Vec>, b: (Vec>, Vec>), c: [Vec>; 3], } #[test] fn named_nested() { assert_eq!(StructNested::inline(), "{ a: Array>, b: [Array>, Array>], c: [Array>, Array>, Array>], }"); } #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct Tuple(Vec, (Vec, Vec), [Vec; 3]); #[test] fn tuple() { assert_eq!( Tuple::inline(), "[Array, [Array, Array], [Array, Array, Array]]" ); } #[derive(TS)] #[ts(export, export_to = "generic_fields/")] struct TupleNested( Vec>, (Vec>, Vec>), [Vec>; 3], ); #[test] fn tuple_nested() { assert_eq!( TupleNested::inline(), "[Array>, [Array>, Array>], [Array>, Array>, Array>]]" ); }