Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rust

Avatar for Sibi Sibi
October 10, 2020

 Rust

Avatar for Sibi

Sibi

October 10, 2020
Tweet

More Decks by Sibi

Other Decks in Programming

Transcript

  1. Heap and Stack Heap and Stack Heap: Memory set aside

    for dynamic alloca on. Stack: Memory set aside for a thread.
  2. Ownership rules Ownership rules Each value in Rust has a

    variable that’s called its owner. There can only be one owner at a me. When the owner goes out of scope, the value will be dropped. { let s1 = String::from("hello ilugc"); // s1 is valid from this point forward // do stuff with s1
  3. Data interaction Data interaction fn main() { let x: i32

    = 5; let y = x; println!("Output: {} {}", x, y); } fn main() { let x = String::from("hello ilugc"); let y = x; println!("Output: {} {}", x, y); }
  4. Ownership Ownership fn main() { let s = String::from("hello"); //

    s comes into scope takes_ownership(s); // s's value moves into the function... // ... and so is no longer valid here let x = 5; // x comes into scope makes_copy(x); // x would move into the function, // but i32 is Copy, so it’s okay to still // use x afterward
  5. References References fn main() { let s1 = String::from("hello"); let

    len = calculate_length(&s1); println!("The length of '{}' is {}.", s1, len); } fn calculate_length(s: &String) -> usize { s.len() }
  6. References (2) References (2) fn main() { let mut s

    = String::from("hello"); change(&mut s); } fn change(some_string: &mut String) { some_string.push_str(", world"); }
  7. Snippet 1 Snippet 1 fn main() { let mut x

    = String::from("ilugc"); let r1 = &mut x; let r2 = &mut x; println!("{}", r1); }
  8. Snippet 2 Snippet 2 fn main() { let mut x

    = String::from("ilugc"); let r1 = &x; let r2 = &mut x; println!("{}", r1); }
  9. Snippet 3 Snippet 3 use std::thread; fn main() { let

    v = vec![1, 2, 3]; let handle = thread::spawn(|| { println!("Here's a vector: {:?}", v); }); handle.join().unwrap(); }
  10. Why Rust Why Rust Compile me guarantees Zero cost abstrac

    on No excep ons. So easy FFI integra on. Error messages Community