Intro to Rust

Divya

@shortdiv
Software Engineer at Netlify

Goals:

Share knowledge

Ask Questions

Pair

Grow

Have Fun!

What is Rust?

What is Rust?

Rust is a statically and strongly typed modern systems programming language focusing on safety, speed, and concurrency. It accomplishes these goals by being memory safe without using garbage collection.

all types are known at compile-time

types are designed to make it harder to write incorrect programs

generating the best possible machine code with full control of memory use

e.g. OS, device drivers

Why Rust?

Top Down Rust

Package Manager npm Go modules crates
Version Manager nvm go get rustup
Registry npmjs.com pkg.go.dev crates.io
Config package.json go.mod cargo.toml
Task Runner npm scripts/gulp make/go run/go build make / cargo run 
Linter eslint/tslint golint clippy
Formatter prettier go fmt rustfmt
JavaScript Go Rust

Installation

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

[[ Install Rustup ]]

https://www.rust-lang.org/tools/install

windows

mac

rustc

├── babys_first_rust/
  └── src    
    └── main.rs

your code

Compiling + Executing

rustc main.rs
./main

Cargo

├── babys_first_rust/
  ├── src
    ├── main.rs
  └── cargo.toml

your config

your code

cargo.toml

[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"

[dependencies]

Compiling + Executing

cargo build
./target/debug/hello_cargo

OR

cargo run 

Rust Playground

println!("Hello, world!");

fn main() {
    println!("Hello, world!");
}

println!("Hello, world!");

fn main() {
    println!("Hello, world!");
}

4 spaces

end of expression

first code that runs in every executable Rust program

console log macro

println!("Hello {}", SOME_VAR);
println!("Hello {:?}", "world");

Rust Basics

Variables and Constants

Variables and Mutability

Variables and Shadowing

Variables and Shadowing

Primitive Data Types

Type Example Values
bool (scalar) true/false
char (scalar) ❤️, a, 東京
i8, i16, i32, i64, isize (scalar) -5, 42, 
u8, u16, u32, u64, usize (scalar) 5, 42
f32, f64 (scalar) 3.14, 4,5
array (compound) let array: [i32; 5] = [0, 1, 2, 3, 4];
slice let slice = &array[0..3];
str "Hello World"
tuple (compound) let tuple = ("hello", 42, "world", [3,6,9]);

Functions

Functions with Params

Functions with Returns

Conditionals

Conditionals: While

Iterators

Let's Work!

The rules of raindrops are that if a given number:

  • has 3 as a factor, add 'Pling' to the result.
  • has 5 as a factor, add 'Plang' to the result.
  • has 7 as a factor, add 'Plong' to the result.
  • does not have any of 3, 5, or 7 as a factor, the result should be the digits of the number.

Solution

Further Resources

Thank you!

Rustlings: Live!

By shortdiv

Rustlings: Live!

  • 738