// Copyright 2026 Amber Hu
use std::vec::Vec;

// Let's use the get_number() function we just made in result.rs
mod result;
use self::result::get_number;

fn main() {
    let mut array = [0, 1, 2, 3, 4];
    increment_array(&mut array);
    println!("array: {array:?}");
   
    // Cannot read from uninitialized memory
    //let x : i32;
    //println!("x: {x}");
   
    // Try running `cargo valgrind run` to see if mem is leaked
    //let size = get_number();
    //populate_vec_and_print(size);
}

// We didn't pass the length of the array in, but it still prevented
// a buffer overflow!
fn increment_array(arr : &mut [i32]) {
    arr[4] += 1;
    arr[5] += 1;  // hmmm
}

fn populate_vec_and_print(size : u8) {
    let mut v = Vec::new();
    for i in 0..size {
        v.push(i);
    }
    println!("{v:?}");
    // v gets Dropped (destructed)
}