Advent of Code
Advent of Code 2022
After my placements, I decided to pick up rust.
—write benefits
Ownership Model
- Pros:
- Control over memory
- Error free
- Faster runtime
- Smaller program size
- Cons:
- Slower write time.
- Steeper learning curve.
Ownership rules
- Each variable has its own owner.
- Each variable has only 1 owner at time.
- When owner is out of scope, value is dropped.
– stack and heap memory
let s1: String = String::from("hello");
let s2: String = s1;
//here neither a deep copy
// nor shallow copy is created
//it moves it to 2nd variable
//for cloning
let s2 = s1.clone();
Passing string without reference transfers ownership. Passing with reference doesent change ownership. -> this called borrowing. references are immutable by default.
for making them mutable
fn main()
{
let mut ss: String = String::from("hello")
change(&mut s1);
}
fn change(ss: &mut String)
{
ss.push_str(string: ", world.")
}
We can call only one mutable only once at a time.
Once we have a immutable ref, we cant have a mutable ref.
But we can have multiple immutable reference.
You can declare a new variable with the same name as a previous variable, here we can say **the first one is shadowed by the second one.
With slices we can reference elements of a collection. Structs and implementations