# Verify installation
rustc --version
cargo --version
# Run
cargo run --bin hello
# Cloning this repo
git clone [email protected]:t4sk/hello-rust.git
cd hello-rust
cargo build- Install cargo
- Hello world
println!
- Variable
- Immutable by default
letmut- Constant
- Shadowing
- Type placeholder
_
- Scalar types
i32,u32,f32,bool,char- Type conversion
- Min and max value
- Integer overflow
- Compound data types
- String
r#usizeformat!
- Enum
OptionResultderive(Debug, PartialEq)
- Struct
- Update syntax
- Struct method (
impl)Self,self- Associated function (static method)
- Methods (functions called on a particular instance of type)
- Operators
- Math
- Bool
- Comparison
- Bitwise
- if / else
- loop
- for and range
- while
- returning values from loop
usize- label
- match
- match on
OptionandResult _to match rest@
- match on
- if let and let else
- error handling
- panic
- option
- result
- expect, unwrap
?Box<dyn Error>
- ownership
- stack and heap
- stack (last in, first out)
- store data with known fixed size
- heap
- vec (stack = vec pointer, data = heap)
- stack (last in, first out)
- Each value in Rust has an owner.
- There can only be one owner at a time. (Transfer of ownership for variable assignment)
- When the owner goes out of scope, the value will be dropped.
- stack and heap
- borrow
- immutable reference
- mutable reference
- cannot return ref
- function
- slice
- slice is a reference to an collection so it's always borrowed
Stringandstr- dereference
- basic
trait,impl, default impl
- common traits
- trait fn input and output
- super trait
+ - fully qualified trait
- basic
- struct,
Option,Result, vector,_- default G<T = A>
- function
- Monomorphization
- struct,
- method for generic typed struct
- generic traits
FromandInto- trait bound,
+,where Sizedand?Sized- dynamic dispatch
- dynamic dispatch,
dyn,Box<dyn T> - trait object
Box<dyn Error>
- dynamic dispatch,
- associated types
- basic
- operator overloading
- iterator
- vec, array, hashmap
- counter
iterandinto_iter,iter_mut
- iterator adaptors
map,filter,collect,fold,enumerate,rev,zip - while let
- lifetimes
- elision
- static
'_
- Function pointer
- Basic
mapexample- difference between func pointer
- Borrow, ownership and
move Fn,FnMut,FnOnce- Closure as input and output
Box- recursive data structure
- unbox (get value inside box)
Box<dyn Error>
RcRefCell- interior mutability
- Strong and weak references
Weak
- thread
joinmove- return values
- scoped thread
- auto join
- borrows
- return values
- channel
sendandrecv
MutexArcSendandSyncasyncandawaitFuturejoin!andselect!- async
Mutex