Rust is a systems programming language that combines performance with safety – particularly memory safety. While C and C++ have long dominated systems programming, Rust brings modern programming concepts and strong safety guarantees without sacrificing speed.
Table of Contents
- Why Learn Rust?
- Setting Up Your Environment
- Your First Rust Program
- Understanding Ownership
- Common Programming Tasks in Rust
- What’s Next?
- Getting Help
- Start Your Rust Journey
Why Learn Rust?
Three key features make Rust stand out:
- Memory Safety: Rust’s ownership system prevents common bugs like null pointer dereferences and data races at compile time.
- Zero-Cost Abstractions: You get high-level programming features without runtime overhead.
- Modern Tooling: Cargo, Rust’s package manager, makes dependency management and building projects straightforward.
Setting Up Your Environment
Let’s start by installing Rust:
# On Linux/macOS
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# On Windows
# Download rustup-init.exe from <https://rustup.rs>
Code language: PHP (php)
Your First Rust Program
Create a new project:
cargo new hello_rust
cd hello_rust
Code language: JavaScript (javascript)
Open src/main.rs
and you’ll see:
fn main() {
println!("Hello, world!");
}
Code language: JavaScript (javascript)
Let’s write something more interesting:
fn main() {
// Variables are immutable by default
let name = "World";
// String formatting using println! macro
println!("Hello, {}!", name);
// Basic loop
for i in 0..5 {
println!("Count: {}", i);
}
}
Code language: JavaScript (javascript)
Run your program:
cargo run
Understanding Ownership
Here’s a simple example showing Rust’s ownership rules:
fn main() {
let s1 = String::from("hello");
let s2 = s1; // s1 is moved to s2
// This would cause an error:
// println!("{}", s1);
// This works:
println!("{}", s2);
}
Code language: JavaScript (javascript)
Common Programming Tasks in Rust
Here’s how to handle basic tasks:
// Working with vectors
fn main() {
let mut numbers = Vec::new();
numbers.push(1);
numbers.push(2);
numbers.push(3);
for num in numbers {
println!("{}", num);
}
}
// Error handling
fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
return Err(String::from("Division by zero"));
}
Ok(a / b)
}
Code language: JavaScript (javascript)
What’s Next?
This introduction barely scratches the surface of what Rust can do. In upcoming posts, we’ll explore:
- Building command-line tools
- Web development with Rust
- Systems programming
- Concurrent programming
- Integration with other languages
Getting Help
The Rust community is known for being welcoming to newcomers. Here are some resources:
- The official Rust Book
- Rust by Example
- The Rust subreddit
Start Your Rust Journey
Ready to write some Rust code? Try modifying the examples above or create a new project. Share your experiences in the comments below, and let us know what Rust topics you’d like to learn about next.
Remember to check back regularly for new Rust tutorials and projects. We’ll be covering everything from basic concepts to advanced techniques for building robust, efficient applications.