summaryrefslogtreecommitdiff
path: root/rust/tuples.rs
blob: 2ea6c19add111f2fef4d6123e1fe4d029c08ef83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Tuples are compund values

fn main() {
    let _t0: (u8, i16) = (0, -1);

    // Tuples can be nested
    let _t1: (u8, (i32, u16)) = (2, (-9, 99));

    println!("{:?}", _t1);

    // Long tuples can't be printed:
    //let long_tuple = (1,2,3,4,5,6,7,8,9,10,11,12,13);
    //println!("{:?}", long_tuple);

    // Tuples can be destructured
    let tup: (i32, f64, &str) = (1, 5.3, "corno");

    let (x, y, z) = tup;

    println!("{} {} {}", x,y,z );

    let (x, y, z) = (9, 10, 11);
    println!("{} {} {}", x,y,z );

    let (sum, mul) = sum_mul((3, 5));

    println!("{} {}",sum, mul);
}

// Tuples can be passed as function arguments
// and used as return values

fn sum_mul(nums: (i32, i32)) -> (i32, i32) {
    (nums.0 + nums.1, nums.0 * nums.1)
}