Syntax
The Rust syntax is similar to other languages such as C and C++. However, here is a brief overview.
Variable declaration
Rust is a statically typed language, which means that the type of a variable needs to be known, either explicitly or implicitly. The basic syntax for variable declaration is let name: type = value;. E.g.,
fn main() {
let x: usize = 0; // unsigned integer.
let x: &str = "Hello, world!"; // string slice.
let x: String = "Hello, world!".to_string(); // string.
let x: &[u8] = b"Hello, world!"; // byte slice.
let x: Vec<usize> = vec![1, 2, 3, 4, 5]; // vec.
}
Scopes
{ and } define scopes. E.g.,
fn main() { // start of function scope.
println!("Hello, world!");
} // end of function scope.
We can also have nested scopes. E.g.,
fn main() {
let x: &str = "Hello, world!";
{
println!("{x}");
}
}
Scopes are important for ownership and lifetimes, which will be covered later on.
Statement delimiters
; is used for statement delimiters. E.g.,
fn main() {
println!("Hello, world!"); // Defines the println! statement.
} // does not need a ";".
Note that scopes do not need a ; terminator.
Comments
// is used for code comments.
/// is used for docstrings.
/// This is a docstring.
fn main() {
// This is a comment.
println!("Hello, world");
}