Skip to main content


Day 8: Tuples

Hello again, Rustaceans! 🦀

Today, we’re going to learn about tuples in Rust. Tuples are a simple yet powerful feature that allows us to group together multiple values of different types. They are useful when you want to return multiple values from a function or when you want to group related data together.

let my_tuple: (i32, f64, String) = (10, 3.14, "Hello".to_string());

Here, my_tuple is a tuple that holds an integer, a floating-point number, and a string. Notice how we can store different types of data in the same tuple - that’s one of the things that make tuples so versatile!

Accessing elements in a tuple is straightforward. We use the dot operator followed by the index of the element:

println!("First element (integer): {}", my_tuple.0);
println!("Second element (float): {}", my_tuple.1);
println!("Third element (string): {}", my_tuple.2);

But what if we want to assign the values of a tuple to separate variables? That’s where destructuring comes in:

let (x, y, z) = my_tuple;
println!("Destructured values: x = {}, y = {}, z = {}", x, y, z);

With destructuring, we can assign the values of the tuple to the variables xy, and z in a single line of code. Neat, right?

If you’ve used Python, you might have come across functions that return more than one value. For instance, consider a function that calculates the area and circumference of a circle:

import math

def circle_properties(radius):
    area = math.pi * radius ** 2
    circumference = 2 * math.pi * radius
    return area, circumference

area, circumference = circle_properties(5)
print(f"Area: {area}, Circumference: {circumference}")

In this Python code, circle_properties return two values, which are then assigned to area and circumference respectively.

As I’ve said in the past, Rust is like a hybrid of C and Python. It takes all the good things from Python, such as returning multiple values from a function, while maintaining the low memory usage and zero-cost abstractions of C/C++. You can use tuples in Rust to achieve results similar to Python.

Consider a function in Rust that calculates the area and circumference of a circle: