Struct
Struct is a new type composed of other types.
In the example we define a struct Point with two fields, x and y, both of which are integers.
We can create an instance of Point by writing { x: 3, y: 4 }. The struct name can be omitted since the compiler can infer it from the labels x and y.
We can also add a Point:: prefix to create an instance explicitly to disambiguate its type.
Analogous to tuples, we can access the fields of a struct using the syntax point.x.
The derive(Debug) after the struct definition means that we can convert the struct to a debug representation, for example with to_repr.
The fields of a struct are immutable by default; they can't be changed after they are created. There is a syntax called functional update that allows you to create a new struct with some fields updated.
We will learn how to make the fields mutable in the next lesson.
struct Point {
x : Int
y : Int
} derive(Debug)
fn main {
// create a point
let point = { x: 3, y: 4 }
println("point: \{to_repr(point)}")
println("point.x: \{point.x}")
println("point.y: \{point.y}")
// functional update
let point2 = {..point, x: 20}
println("update: \{to_repr(point2)}")
}