A enforcement of memory allocation that ensures:
- All variables initialized before used
- Cant move the same value twice
- Cant move a value while its borrowed
- Cant access a place while its mutably borrowed
- Cant mutate a place where its immutably borrowed