use std::char;

fn main() {
    println!("Hello, world!");
    // ownership_ex();
    borrowing_references();
}


fn ownership_transfer_ex () {
    // this is a string literal
    let s = "hello";
    // this is a string
    let ab = String::from("hello");
    let a: char = ab.chars().nth(0).expect("REASON");
    println!("{}", a); // outputs 'h'

    // do stuff with s
}
// is is out of scope and therefore invalid

fn borrowing_references () {
    let mut s1 = String::from("hello");
    change_string(&mut s1);
    // s1 is still valid aat this point so ownership didint change
    println!("{}", s1);
    // do more stuff with s1
}

fn change_string (some_string: &mut String) {
    // using borrowed value contained in some_string
    some_string.push_str(", world");
    // some_string out of scope and therefore invalid
}