The programming language finding a new audience through vibe coding
Ask an AI to build an application and you may find yourself working with a programming language you have never learnt. For a website, that might be JavaScript or TypeScript. For a desktop application, developer tool or project involving demanding calculations, Rust may enter the conversation.
Rust has a reputation for being demanding. Its compiler questions decisions that other languages might let pass. Yet those checks are part of its appeal when AI is generating the code. A tool that spots certain mistakes before a program runs becomes particularly useful when you have not written every line yourself.
So where did Rust come from, what makes it different, and when might it be a good choice for your next application?
From a personal project to a programming language
Rust began as Graydon Hoare’s personal project in 2006. Mozilla began supporting its development in 2009, helping it grow into a language intended for demanding software. Rust reached its first stable release, version 1.0, in May 2015.
Its development addressed a difficult problem: how can programmers get close control over a computer’s resources while avoiding common memory errors?
Languages such as C and C++ offer considerable control, but mistakes in memory management can cause crashes and security vulnerabilities. Rust uses rules checked during compilation to prevent many of these problems. It aims to combine efficient execution with stronger safeguards around how data is used.
Today, Rust is an open-source community project. The Rust Foundation supports the language and its ecosystem, building on work that began long before the current enthusiasm for AI-generated applications.
What can you build with Rust?
Rust is a general-purpose language, with particular strengths where performance, memory use and reliability matter. Its official website highlights command-line tools, network services, embedded devices and WebAssembly. WebAssembly allows compiled code to run inside a browser alongside the surrounding web application.
For someone building their own tools, this opens up interesting possibilities: a utility that processes thousands of files, a local application that analyses data, or a browser-based tool with a demanding calculation at its centre.
Rust can also form the engine of a desktop application. The Tauri framework, for example, lets developers combine a web-based interface with Rust application code. The buttons and layout can use familiar web technologies, while Rust handles work behind them.
This helps explain why Rust can appear in a project even when the finished application looks like an ordinary website.
A first look at the language
A small Rust program looks like this:
fn main() {
let name = "Maryam";
println!("Hello, {}!", name);
}
The program starts in main. The keyword fn means function, curly brackets group instructions, and let introduces a variable.
println! displays text and adds a new line. The {} is a placeholder for the value supplied after the text. The exclamation mark tells us that println! is a macro, a feature that generates Rust code.
Rust can often infer a variable’s type from its value. However, one of its first surprises is that variables are immutable by default: you cannot simply assign a different value to the same variable later.
If a value needs to change, you say so:
fn main() {
let mut score = 10;
score += 5;
println!("Score: {}", score);
}
Here, mut makes score mutable. Remove it and the compiler will reject the reassignment.
This makes the programmer’s intention visible. Someone reading the code can see which values are expected to change, and the compiler can enforce that decision.
Ownership: the idea that makes Rust different
Ownership is central to Rust’s approach to memory.
For many values, Rust tracks which variable owns the data. Ownership can move, and other parts of the program can borrow access through references.
Consider this:
fn main() {
let name = String::from("Maryam");
let other_name = name;
println!("{}", other_name);
}
Ownership of this String moves from name to other_name. Trying to use name afterwards would produce a compiler error.
Alternatively, the program can borrow the value:
fn main() {
let name = String::from("Maryam");
let borrowed_name = &name;
println!("{}", borrowed_name);
println!("{}", name);
}
The & creates a reference, allowing access without transferring ownership.
These rules help Rust manage memory without a garbage collector. Simple values such as integers behave differently because they can be copied during assignment. Understanding the distinction between moving, copying and borrowing makes Rust code much easier to follow.
Familiar programming ideas are still there
Behind the unfamiliar terminology, Rust contains recognisable programming concepts: variables, arithmetic, conditions, functions and loops.
A loop that counts from one to five is fairly compact:
fn main() {
for number in 1..=5 {
println!("Count: {}", number);
}
}
The = in 1..=5 includes the upper limit. Write 1..5 instead and the loop stops after four.
Rust also has while loops, which repeat while a condition is true, and loop, which repeats until the program leaves it, for example through break.
The language may ask for more precision than a beginner expects, but the underlying ideas transfer from other programming languages.
Cargo keeps the project together
Rust comes with Cargo, its standard tool for creating projects, managing dependencies, building programs and running tests.
Creating and running a project begins with:
cargo new hello_rust
cd hello_rust
cargo run
Cargo creates the project structure and compiles the program before running it. Project settings and dependencies are recorded in a file called Cargo.toml.
Rust libraries are commonly distributed as crates. Developers can add crates for jobs such as generating random numbers or handling web requests.
For an AI coding agent, this provides a consistent set of tools to work with. It can edit code, run checks, read the results and attempt a correction.
Why does Rust appeal to vibe coders?
Vibe coding lets people describe what they want and use AI to produce much of the implementation. Rust’s appeal in that setting comes partly from the feedback it gives during development.
An AI model can produce code that looks convincing but uses the wrong types, passes an unsuitable argument to a function or mishandles ownership. Rust’s compiler can reject many such mistakes and return specific diagnostics.
That creates a useful cycle: generate code, check it, read the errors and revise.
In September 2026, GitHub described migrating its Copilot runtime to Rust with extensive help from Copilot itself. Its account examined compiler diagnostics and other validation tools, while also documenting the need for tests, debugging and human judgement.
My interpretation is that Rust’s strictness becomes more attractive when an AI can help with repeated corrections. Compiler messages that can slow a beginner down also give a coding agent concrete information to act on.
AI can also help developers attempt projects whose implementation would previously have felt out of reach. They may understand the application they want but need help with Rust’s syntax, ownership rules or libraries.
At a larger scale, Anthropic reported an experiment in which teams of Claude agents built a C compiler in Rust. The account described limitations and the importance of a strong testing environment. It demonstrates what AI-assisted development can attempt, rather than proving that generated software can be trusted without review.
These examples show serious interest in Rust for AI-assisted engineering. They do not establish that Rust is the most widely used language among vibe coders.
Rust, Swift, Python or JavaScript?
Rust has clear strengths, but other languages offer advantages that may matter more for your application. The choice depends on where the program will run, what it needs to do and how easily you can understand and maintain it.
| Language | Where it shines | What to consider |
|---|---|---|
| Rust | Efficient tools, demanding calculations and components that need careful control over memory. | Ownership rules and compilation can make development more involved. |
| Swift | Applications for Apple devices and integration with Apple’s frameworks. | Swift works beyond Apple platforms, but Apple-specific interfaces depend on their ecosystem. |
| Python | Automation, data analysis, AI experiments and readable scripts. | Packaging an application for other people can require additional work. |
| JavaScript | Interactive websites and applications people can open through a link. | Sensitive operations and private keys need an appropriate server-side design. |
| C# | Windows desktop applications and software built with .NET. | The chosen interface framework affects which operating systems the application supports. |
These are starting points rather than fixed boundaries. Each language can do more than its most familiar role.
Swift: a strong fit for Apple applications
If your idea centres on an iPhone, iPad or Mac, Swift deserves a look. Apple develops Swift for its platforms, with access to frameworks that provide their interfaces and device features. Swift is also a general-purpose language with uses beyond Apple devices, including server applications.
For a vibe coder, Swift provides a direct route into Apple’s application ecosystem. Rust may still be useful for a demanding processing component.
Python: readable code for useful jobs
Python’s appeal is its readable syntax and extensive libraries. It is used for automation, scientific computing, data analysis, web development and many other tasks. Its interpreted nature supports quick experimentation.
If you want to rename hundreds of files, analyse survey results or test an idea, Python may be a comfortable place to begin. Readability matters when working with AI: code you can follow is easier to question, modify and check.
JavaScript: make something people can open
JavaScript works with HTML and CSS to make web pages interactive. It also runs outside browsers through environments such as Node.js. For a quiz, simulation or classroom tool, a browser-based application can make sharing straightforward: users follow a link.
You may also encounter TypeScript, which adds type checking to JavaScript and converts to JavaScript for execution. Those checks can catch certain mistakes before the application runs, although they do not provide Rust’s ownership and borrowing guarantees.
What about Windows? Meet C#
C#, pronounced “C sharp”, is an important option for building Windows applications with AI assistance. It works with .NET, Microsoft’s free, open-source development platform. Windows interface frameworks include WinUI, WPF and Windows Forms. C# itself also supports applications beyond Windows, including web services and cross-platform projects.
Windows applications can also use web technologies. Electron combines JavaScript, HTML and CSS with Chromium and Node.js to create desktop applications for Windows, macOS and Linux. Tauri offers another approach, combining a web interface with Rust application code.
Are AI assistants better at some languages?
AI coding ability varies between languages, but there is no permanent league table. The model, the complexity of the project and the tools available to check its work all affect the result.
Python has a particularly strong evidence base. A September 2026 study, Multi-SWT-Bench, evaluated AI systems on generating tests that reproduce software bugs across eight languages. In every evaluated combination of method and model, Python’s success rate exceeded the combined rate across languages. This supports confidence in Python for that kind of work, although it does not mean every Python application will be generated correctly.
Earlier repository-level research points in a similar direction. In SWE-PolyBench’s 2025 evaluation, Aider-PB using Claude Sonnet 3.5 resolved 24.12% of Python tasks, compared with 12.59% for JavaScript and 13.03% for TypeScript. These are results from an older model and different repository tasks, so they cannot be treated as today’s language rankings.
JavaScript also has a strong history in code-generation research. The original MultiPL-E study found that the Codex model it evaluated performed best on JavaScript. However, those results came from an earlier generation of AI and relatively small programming problems. They demonstrate capability, rather than establishing today’s winner.
Rust’s compiler feedback offers a useful development workflow, but that is different from evidence that AI writes Rust more accurately than other languages. For Swift and C#, the sources reviewed here do not provide an equally recent comparison across all five languages.
A useful practical check is to start with one small, representative feature. Can the assistant build it, test it and explain how it works? That gives you evidence about your project before you commit to a much larger build.
A strict compiler cannot check your intentions
Rust’s checks are valuable, but they have a specific scope.
A program can compile successfully and still calculate the wrong answer, expose private information or allow the wrong person to access a record. Memory safety does not establish that an application’s permissions, data handling or business rules are correct.
Imagine an AI-generated school application that displays student reports. Rust might prevent certain memory errors, but the application could still show one student’s report to another student if its access checks were poorly designed.
The developer still needs to ask: does this do the right thing, for the right person, with the right information?
This matters particularly when the person directing the AI cannot yet explain the generated code. Compiler feedback supports understanding and testing; it cannot replace them.
Should your next application use Rust?
The project’s needs should guide the choice.
Rust is worth considering when efficient processing, native application code or careful resource management forms an important part of the project. Its learning curve may be worthwhile when those strengths solve a real problem.
For a small interactive webpage, adding Rust may introduce complexity without a clear benefit. For an Apple application, Swift may provide a more direct route. For automation or data analysis, Python may be easier to inspect and adapt. For a Windows utility, C# deserves consideration.
Ask your AI assistant to explain its recommendation before the project grows around that decision. What does the language contribute? How will you test the application? How will other people run it?
Rust offers an interesting partnership for AI-assisted development: AI can help produce and revise the implementation, while the compiler enforces a demanding set of rules. The person building the application still supplies the purpose, checks the behaviour and decides whether it is ready for others to use.

Read more about Vibe coding in Vibe Coding>>
Sources and further reading
Rust and its origins
- Rust: official language website
- The Rust Programming Language: free online book
- Rust Playground: try code in your browser
- Graydon Hoare’s archive of Rust’s early development
- Ten Years of Stable Rust: an Infrastructure Story
- Ownership explained
Languages and application frameworks
- About Swift
- Applications for Python
- JavaScript introduction
- TypeScript
- A tour of C#
- Electron
- What is Tauri?
Evidence about AI-assisted programming
- Multi-SWT-Bench: multilingual reproduction test generation, September 2026
- SWE-PolyBench: repository-level evaluation across four languages
- MultiPL-E: comparing code generation across languages
- GitHub: migrating the Copilot runtime to Rust using Copilot
- Anthropic: building a C compiler with a team of parallel Claudes
