You're looking at the documentation for the "main" branch, click here to view the documentation for the latest stable release.

Variables

Using the let keyword we can define two different types of variables: local variables and constants.

Local variables

Local variables are defined as follows:

let number = 42

By default, a variable can't be assigned a new value after its definition:

let number = 42

number = 50 # This produces a compile-time error

To allow this, use let mut like so:

let mut number = 42

number = 50 # This is now OK

The type of a variable is inferred according to the value assigned to it. A custom type can be specified as follows:

let number: Int = 42

Swapping values

Assigning a variable a new value using = drops the existing value first, then assigns the new value to the variable. Using the := we can assign a value and return the previous value:

let mut a = 10

a := 20 # This returns `10`

This is known as a "swap assignment".

Drop order

Local variables are dropped in reverse-lexical order:

let a = foo
let b = bar

Here b is dropped first, followed by a.

Constants

Constants are defined similar to local variables, except their names start with a capital letter:

let NUMBER = 42

Unlike local variables, constants can never be assigned a new value. This means the following is a compile-time error:

let mut NUMBER = 42

Constants can only be defined outside of methods and classes, i.e. like so:

let NUMBER = 42

class Cat {}

Constants are permanent values and as such are never dropped.