Basics
1. Hello World
fn main() {
println!("Hello, world!");
}
2. Variables and Mutability
// Immutable variable
let x = 5;
// Mutable variable
let mut y = 10;
y = 15; // OK
// Constants
const MAX_POINTS: u32 = 100_000;
3. Data Types
// Scalar Types
let num: i32 = -10;
let floating: f64 = 3.14;
let is_true: bool = true;
let character: char = 'a';
// Compound Types
let tuple: (i32, f64, bool) = (500, 6.4, true);
let array: [i32; 5] = [1, 2, 3, 4, 5];
Control Flow
1. If Statement
let number = 6;
if number % 2 == 0 {
println!("Even");
} else {
println!("Odd");
}
2. Loop
let mut counter = 0;
loop {
counter += 1;
if counter == 5 {
break;
}
}
3. While Loop
let mut countdown = 5;
while countdown > 0 {
println!("{}", countdown);
countdown -= 1;
}
4. For Loop
let numbers = [1, 2, 3, 4, 5];
for num in numbers.iter() {
println!("{}", num);
}
Functions
1. Basic Function
fn greet(name: &str) {
println!("Hello, {}!", name);
}
greet("Ali");
2. Functions with Return Values
fn add(a: i32, b: i32) -> i32 {
a + b
}
let result = add(5, 3);
Error Handling
1. Result Type
fn divide(a: f64, b: f64) -> Result<f64, &'static str> {
if b == 0.0 {
return Err("Division by zero");
}
Ok(a / b)
}
match divide(10.0, 2.0) {
Ok(result) => println!("Result: {}", result),
Err(err) => println!("Error: {}", err),
}
Ownership, Borrowing, and Lifetimes
1. Ownership
let s1 = String::from("hello");
let s2 = s1; // Ownership moved to s2
2. Borrowing
fn calculate_length(s: &String) -> usize {
s.len()
}
let s = String::from("hello");
let len = calculate_length(&s); // Borrowed s
3. Lifetimes
fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
if s1.len() > s2.len() {
s1
} else {
s2
}
}
Advanced Concepts
1. Structs
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
let rect = Rectangle { width: 10, height: 20 };
let area = rect.area();
2. Enums
enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter => 25,
}
}
3. Traits
trait Vehicle {
fn drive(&self);
}
struct Car;
impl Vehicle for Car {
fn drive(&self) {
println!("Car is driving...");
}
}
let car = Car;
car.drive();
Conclusion
This Rust cheatsheet provides a quick overview of essential concepts and syntax in Rust programming language, catering to beginners and intermediate developers alike. Whether you're building a small utility or a complex system, Rust's safety features and performance make it an excellent choice for various applications.