TypeScript

Trait TypeScript 

Source
pub trait TypeScript {
    // Required method
    fn typescript() -> TypeDef;
}
Expand description

The core trait for types that can be represented as TypeScript.

This is the foundation trait for ferrotype, similar to how Serialize is the foundation of serde. Implementations return a TypeDef that describes the TypeScript representation of the type.

§Design Philosophy

Unlike string-based approaches, returning a structured TypeDef enables:

  • Deduplication: Named types can be collected and emitted once
  • Analysis: Dependencies between types can be tracked
  • Flexibility: The IR can be rendered in different styles
  • Composition: Complex types build from simpler TypeDefs

§Example

use ferrotype::{TypeScript, TypeDef, Primitive};

struct UserId(String);

impl TypeScript for UserId {
    fn typescript() -> TypeDef {
        TypeDef::Named {
            namespace: vec![],
            name: "UserId".into(),
            def: Box::new(TypeDef::Primitive(Primitive::String)),
        }
    }
}

Required Methods§

Source

fn typescript() -> TypeDef

Returns the TypeScript type definition for this type.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl TypeScript for &str

Source§

impl TypeScript for bool

Source§

impl TypeScript for char

Source§

impl TypeScript for f32

Source§

impl TypeScript for f64

Source§

impl TypeScript for i8

Source§

impl TypeScript for i16

Source§

impl TypeScript for i32

Source§

impl TypeScript for i64

Source§

impl TypeScript for i128

Source§

impl TypeScript for isize

Source§

impl TypeScript for u8

Source§

impl TypeScript for u16

Source§

impl TypeScript for u32

Source§

impl TypeScript for u64

Source§

impl TypeScript for u128

Source§

impl TypeScript for ()

Source§

impl TypeScript for usize

Source§

impl TypeScript for String

Source§

impl<A: TypeScript> TypeScript for (A,)

Source§

impl<A: TypeScript, B: TypeScript> TypeScript for (A, B)

Source§

impl<A: TypeScript, B: TypeScript, C: TypeScript> TypeScript for (A, B, C)

Source§

impl<A: TypeScript, B: TypeScript, C: TypeScript, D: TypeScript> TypeScript for (A, B, C, D)

Source§

impl<A: TypeScript, B: TypeScript, C: TypeScript, D: TypeScript, E: TypeScript> TypeScript for (A, B, C, D, E)

Source§

impl<A: TypeScript, B: TypeScript, C: TypeScript, D: TypeScript, E: TypeScript, F: TypeScript> TypeScript for (A, B, C, D, E, F)

Source§

impl<K: TypeScript, V: TypeScript> TypeScript for BTreeMap<K, V>

Source§

impl<K: TypeScript, V: TypeScript> TypeScript for HashMap<K, V>

Source§

impl<T: TypeScript> TypeScript for Option<T>

Source§

impl<T: TypeScript> TypeScript for Box<T>

Source§

impl<T: TypeScript> TypeScript for Rc<T>

Source§

impl<T: TypeScript> TypeScript for Arc<T>

Source§

impl<T: TypeScript> TypeScript for Vec<T>

Source§

impl<T: TypeScript> TypeScript for Cell<T>

Source§

impl<T: TypeScript> TypeScript for RefCell<T>

Source§

impl<T: TypeScript, E: TypeScript> TypeScript for Result<T, E>

Implementors§