fn main() {
// Variables type annotated.
let logical: bool = true;
let a_float: f64 = 3.14;
let an_integer = 720i32; // Suffix annotation
// default will be used.
let default_float = 14.801; // f64
let default_integer = 891; // i32
// A type inferred from context.
let mut inferred_type = 18; // Type i64 is inferred from another line.
println!("initial inferred_type: {inferred_type}");
inferred_type = 5342410018i64;
// A mutable variable's value can be changed.
let mut mutable = 87; // Mutable i32
mutable += 10;
println!("original mutable (i32): {mutable}");
// Variables can be overwritten with shadowing.
let mutable = true;
/* Array and Tuple */
// Array consists of Type T and length as [T; length].
let my_array: [i32; 5] = [1, 2, 3, 4, 5];
// Tuple is a collection of values of different types
let my_tuple = (23445u32, 98u8, false, -65.054f32);
// --- Printing all variables ---
println!("logical: {logical}");
println!("a_float: {a_float}");
println!("an_integer: {an_integer}");
println!("default_float: {default_float}");
println!("default_integer: {default_integer}");
println!("inferred_type: {inferred_type}");
println!("shadowed mutable: {mutable}");
println!("my_array: {my_array:?}"); // {:?} debug format for arrays
println!("my_tuple: {my_tuple:?}"); // {:?} debug format for tuples
}
/*
run:
initial inferred_type: 18
original mutable (i32): 97
logical: true
a_float: 3.14
an_integer: 720
default_float: 14.801
default_integer: 891
inferred_type: 5342410018
shadowed mutable: true
my_array: [1, 2, 3, 4, 5]
my_tuple: (23445, 98, false, -65.054)
*/