Tutorial on Intro to Rust Programming
Tags: rust, tutorial, opensource, python
Published: 2022-11-25 18:04:55

Summary posted by: [Sangam SwadiK](https://www.linkedin.com/in/sangam-swadi-k/)

## Intro to Rust
The Data Science community has greatly benefitted from the python ecosystem(scipy, numpy, scikit-learn etc.) which has tools at every step of the Data Science workflow. Under the hood most of these python libraries use C/C++ which has bindings with python to improve performance. Although this has reduced developmental time, it is not without the reduction in performance as python is not known for its performance.

This is where Rust comes in! It provides performance similar to C/C++ but 
better memory use and concurrency. It can be used with python just as C/C++ but with improved speed and safety. 

There has been an upward trend in opensource tools written in Rust with interfaces to python eg: [pydantic](https://github.com/pydantic/pydantic) ([moved to Rust in the recent release](https://pydantic-docs.helpmanual.io/blog/pydantic-v2/)), [polars](https://github.com/pola-rs/polars) which is very fast as indicated in the H2Oai [benchmarks](https://h2oai.github.io/db-benchmark/).

## Into to event
An introduction to Rust Programming for complete beginners. This 2-hour video tutorial covers:  
- what is Rust
- how to install Rust
- how to use Rust online
- basic structure of a Rust program
- core concepts of Rust
- a little CLI (command line interface) program
- Q&A 

## Video
{% youtube 7E8nLExn3WI %}

## Resources
- [Event outline and notes](https://github.com/rochacbruno/rust-intro/blob/wip/script.md)
- GitHub repo: [rust-intro](https://github.com/rochacbruno/rust-intro)
- Data science libraries in Rust: [https://www.arewelearningyet.com/](https://www.arewelearningyet.com/)
- Rust book:  [https://www.rust-lang.org/learn](https://www.rust-lang.org/learn)
- micro (terminal editor): [https://micro-editor.github.io/](https://micro-editor.github.io/)

## Section Timestamps of Video  
- [00:00:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=0s) Beryl introduces Data Umbrella
- [00:05:35](https://www.youtube.com/watch?v=7E8nLExn3WI&t=335s) Bruno begins presentation
- [00:13:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=780s) Hello World
- [00:18:10](https://www.youtube.com/watch?v=7E8nLExn3WI&t=1090s) Cargo and Projects
- [00:24:50](https://www.youtube.com/watch?v=7E8nLExn3WI&t=1490s) Variable Definition
- [00:36:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=2160s) Type Inference
- [00:41:12](https://www.youtube.com/watch?v=7E8nLExn3WI&t=2472s) Mutability
- [00:46:56](https://www.youtube.com/watch?v=7E8nLExn3WI&t=2816s) Strong Typing
- [00:49:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=2940s) Variable Shadowing
- [00:53:30](https://www.youtube.com/watch?v=7E8nLExn3WI&t=3210s) Constants
- [00:58:21](https://www.youtube.com/watch?v=7E8nLExn3WI&t=3501s) Data Types
- [01:14:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=4440s) Static, Stack & Heap
- [01:23:58](https://www.youtube.com/watch?v=7E8nLExn3WI&t=5038s) Function
- [01:26:02](https://www.youtube.com/watch?v=7E8nLExn3WI&t=5162s) Docs
- [01:28:43](https://www.youtube.com/watch?v=7E8nLExn3WI&t=5323s) Ownership
- [01:34:36](https://www.youtube.com/watch?v=7E8nLExn3WI&t=5676s) Borrowing
- [01:37:37](https://www.youtube.com/watch?v=7E8nLExn3WI&t=5857s) Console Input
- [01:40:18](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6018s) DEMO ERROR ignore this part :)
- [01:43:02](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6182s) Read user input
- [01:45:22](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6322s) Combinators
- [01:46:01](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6361s) Result type
- [01:50:00](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6600s) External Dependency
- [01:52:07](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6727s) Random numbers
- [01:54:38](https://www.youtube.com/watch?v=7E8nLExn3WI&t=6878s) Type coercion
- [01:59:09](https://www.youtube.com/watch?v=7E8nLExn3WI&t=7149s) Complete program
- [02:01:47](https://www.youtube.com/watch?v=7E8nLExn3WI&t=7307s) Q & A

## About the Speaker
### Bio
Bruno is a Software Engineer who works developing the Red Hat Ansible Platform, he is member of the Python Software Foundation, creator of Dynaconf settings manager and a Rust enthisiast for 5+ years.

### Connect with the Speaker, Bruno Rocha
- YouTube: [@rochacbruno](https://www.youtube.com/@rochacbruno)
- LinkedIn: [Bruno Rocha](https://www.linkedin.com/in/rochacbruno)
- Twitter: [@rochacbruno](https://twitter.com/rochacbruno)
- GitHub: [@rochacbruno](https://github.com/rochacbruno)