Rust cheatlist
Cargo
cargo new project_name
: Initializes a new Rust project named project_name in the current directory.cargo build
: Build program without optimizations. Output is stored in ./target/debug.cargo build –release
: Build program with runtime optimizations. Output is stored in ./target/release.
Data types
- Scalar types:
- Integer: Internally represented in 2-components notation when signed (-(2n ) → 2n -1)
Length | Signed | Unsigned |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
- Floating point:
f32
,f64
- Boolean:
bool
- Character:
char
- Compound types
- Tuple: Fixed size (defined at declaration), elements may differ in type
let tup: (i32, f64, u8) = (500, 6.4, 1);
- Values can be retrieved by either pattern matching:
let (x, y, z) = tup; // x, y and z are now accessible as variables
or by using a periodlet x = tup.0;
- Array: Fixed size, elements should be of the same type
let a = [1, 2, 3];
let a: [f64; 3] = [1.0, 2.0, 3.0];
let a = [0; 5];
: Creates an array of size 5 with all elements initialized to 0let first = a[0];
: Accessing elements of arrayfor element in a.iter() { … }
: Iterates over elements in array- Rust panics on index out of bounds situations
Variables
let foo = bar;
: Creates immutable variablefoo
and assigns it valuebar
.let mut foo = bar;
: Creates mutable variablefoo
and assigns it valuebar
.let foo: type = false;
: Creates immutable variablefoo%
with explicit type definition.
Functions
fn function_name() { … }
fn function_name(x: i32, y: char) { … }
: Parameterized functionfn function_name(x: i32) → i32 { … }
: Function with return value. Returned value is last evaluated expression of the function body.
Terminology
- Associated function: function implemented on a type rather than on a particular instance of the type. Similar as a static method in Java.
- Destructing: splitting a tuple in individual parts by pattern matching
- Expression: instructions that evaluate to a resulting value. No semicolon at end of line!
- Macro:
- Prelude:
- Statement: instructions that do not return a value
- Trait:
Syntax
&var
: Passesvar
as a reference. Allows a function to access a variable without the need to copy it to the function's stack.&mut var
: Passesvar
as a mutable reference. Allows a function to access and alter the variable's value.