Ship Rust. Write TypeScript.
A complete development ecosystem for building native applications with the TypeScript syntax you already know. 3MB binaries. No V8. No garbage collector.
import { Serialize } from "serde";
type Book = {
title: string,
author: string,
rating: f64,
} derives Serialize
function main() {
const books: Array<Book> = [
{ title: "Dune", author: "Herbert", rating: 4.7 },
{ title: "Neuromancer", author: "Gibson", rating: 4.5 },
];
const top = books.filter(b => b.rating > 4.6);
console.log(JSON.stringify(top));
}use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
struct Book {
pub title: String,
pub author: String,
pub rating: f64,
}
fn main() {
let books: Vec<Book> = vec![
Book { title: "Dune".to_string(), author: "Herbert".to_string(), rating: 4.7 },
Book { title: "Neuromancer".to_string(), author: "Gibson".to_string(), rating: 4.5 },
];
let top: Vec<Book> = books.iter()
.filter(|b| b.rating > 4.6).cloned().collect();
println!("{}", serde_json::to_string(&top).unwrap());
}Get Started in 30 Seconds
cargo install rustscript # installs rustscript + rsc
rsc init my-app --template web-server
cd my-app
rsc runEverything you need to ship Rust
Not a prototype. A complete compiler with full TypeScript syntax coverage, a standard library, production tooling, and zero known conformance gaps.
Familiar Syntax
- •Every TypeScript pattern: classes, generics, async/await, destructuring
- •330+ built-in methods: map, filter, reduce, find, forEach, and more
- •Template literals, optional chaining, nullish coalescing, spread
- •String unions, type aliases, interfaces, discriminated unions
Rust Performance
- •3MB native binaries — no V8, no garbage collector
- •No runtime overhead — compiles to idiomatic Rust
- •Generated code is human-readable and inspectable
- •Eject to pure Rust at any time — no lock-in
Full Crate Ecosystem
- •import { Router } from "axum" — any Rust crate, TS import syntax
- •Dependencies auto-detected from imports — no Cargo.toml editing
- •derives keyword for proc macros: Serialize, Deserialize, Parser
- •axum, serde, tokio, clap, reqwest, sqlx — they all just work
Zero Memory Management
- •No lifetimes, no borrowing annotations, no ownership errors
- •Compiler infers ownership and inserts clones for correctness
- •Tier 2 borrow inference eliminates unnecessary allocations
- •Async/await with tokio — just works, no runtime configuration
Production Tooling
- •VS Code extension with real language server (LSP)
- •Type-aware hover: signatures, doc comments, inferred types
- •Closure parameter inference, generic substitution, field resolution
- •Live diagnostics, code formatting, watch mode, project templates
Friendly Error Messages
- •Errors point to your .rts source lines, not generated Rust
- •Dense source maps with O(1) line lookup
- •rustc JSON diagnostics parsed and re-rendered with RustScript types
- •9 enrichment patterns: type translation, borrow hints, lifetime suggestions
Type Generator
- •rsc types emits .d.ts files from RustScript source
- •One file per module — TypeScript-native output
- •Share types between RustScript backend and TS frontend
- •rsc build --emit-types for CI pipelines — perfect for Tauri apps
Eject Anytime
- •Generated Rust compiles with standard rustc
- •Uses standard crates, follows Rust conventions
- •No custom runtime, no code generation magic
- •Walk away to pure Rust whenever you want
Try it in your browser
Live compilation, real diagnostics, and TypeScript-grade hover tooltips — all running client-side via WebAssembly. No server required.
Open Playground →Real-world examples
Every example compiles to a native binary. No scaffolding, no boilerplate.
Tauri Desktop App
Notes app with RustScript backend, React frontend, shared types, and @command decorators.
REST API
Book catalog with axum + serde. Typed JSON responses, filter/map/reduce pipelines.
HTTP Client
Async HTTP client with reqwest. Parallel fetches with Promise.all, typed responses.
CLI Tool
Task manager with clap. Command dispatch, search, filtering, and formatted output.