fn main() {
println!("Hello World!");
}
$ rustc hello.rs
$ ./hello
Hello World!
fn main() {
let n = 5;
if n < 0 {
print!("{} is negative", n);
} else if n > 0 {
print!("{} is positive", n);
} else {
print!("{} is zero", n);
}
let big_n =
if n < 10 && n > -10 {
println!(", and is a small number, increase ten-fold");
10 * n
} else {
println!(", and is a big number, half the number");
n / 2
};
println!("{} -> {}", n, big_n);
}
fn main() {
let n = 5;
n = 10; // <- Error
}
Variables are immutable by default
fn main() {
let n;
println!("My number: {}", n); // <- Error
n = 10;
}
It is not possible to use a variable before initialization
fn main() {
let mut n = 5;
n = 10;
}
Mutable variables must be declared
fn my_function() {
println!("Hi!");
}
Function declatation
fn typedFunction(num: i64) -> f64 {
println!("Got: {}", num);
return 6.4;
}
Arguments + return type
fn multipleValues() => (i64, f64) {
(1, 2.0)
}
Multiple return values
fn main() {
let n = 5;
n = 10; // <- Error
}
Variables are immutable by default
fn main() {
let n;
println!("My number: {}", n); // <- Error
n = 10;
}
It is not possible to use a variable before initialization
fn main() {
let mut n = 5;
n = 10;
}
Mutable variables must be declared
struct Nil; // "unit" struct
struct Pair(i32, f32); // tuple struct
struct Point { // struct with two fields
x: f32,
y: f32,
}
struct Rectangle { // nested struct
p1: Point,
p2: Point,
}
Structured type declarations
fn main() {
let point = Point { x: 0.3, y: 0.5 };
let rect = Rectangle {
p1: p1,
p2: Point { x: 2.3, y: 5.5 },
};
println!("My rectangle: [{}, {}] -> [{}, {}]",
rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y
);
}
Usage
enum WebEvent {
PageLoad,
PageUnload,
KeyPress(char),
Paste(string),
Click { x: i64, y: i64 },
}
Declaring an enum
fn inspect(event: WebEvent) {
match event {
WebEvent::PageLoad => println!("page loaded"),
WebEvent::PageUnload => println!("page unloaded"),
// Destructure `c` from inside the `enum`.
WebEvent::KeyPress(c) => println!("pressed '{}'.", c),
WebEvent::Paste(s) => println!("pasted \"{}\".", s),
// Destructure `Click` into `x` and `y`.
WebEvent::Click { x, y } => {
println!("clicked at x={}, y={}.", x, y);
},
}
}
simple matching
fn is_prime(number: u64) {
match number {
1 => println!("One!"),
2 | 3 | 5 | 7 | 11 => println!("This is a prime!"),
13...19 => println!("Probably a prime!"),
_ => println!("Likely not a prime!"),
}
}
Matching integer values
fn main() {
let n = 5;
n = 10; // <- Error
}
Variables are immutable by default
fn main() {
let n;
println!("My number: {}", n); // <- Error
n = 10;
}
It is not possible to use a variable before initialization
fn main() {
let mut n = 5;
n = 10;
}
Mutable variables must be declared