Talking Points
What is Rust?
" Garbage Collection " - Resource Acquisition Is Initialization (RAII)
Strict Typing with Type Inference
Reference pointers
Immutable by default
Unsafe Mode
Why use Rust over Python?
Speed
Compiled
Help from compiler
Smaller binary size
Useful in high throughput/embedded applications
Logically consistent
Why use Rust over C?
Safe by default
Easier to read
Forces you to write good code
Arrays without stupidity++ and built in vectors
Option<T> and Result<T> or a match {} made in heaven
Show Notes
Strict Typing
fn main() {
// Type declared with var: <T> syntax
let penguin_one: &str = "gentoo";
// Type &str is inherited from "gentoo"
let penguin_two = "gentoo";
// Will not panic if they are the same
assert_eq!(penguin_one, penguin_two);
}
Reference Pointers
Wrong Way:
fn print_u8_vector(vec: Vec<u8>) {
println!("{:?}", vec);
}
fn main() {
let penguin_ages: Vec<u8> = vec!(2, 4, 6);
print_u8_vector(penguin_ages);
// This line will throw an error
println!("{}", penguin_ages[0]);
}
Correct Way:
fn print_u8_vector(vec: &Vec<u8>) {
println!("{:?}", vec);
}
fn main() {
let penguin_ages: Vec<u8> = vec!(2, 4, 6);
print_u8_vector(&penguin_ages);
// This line will print '2'
println!("{}", penguin_ages[0]);
}
Immutable By Default
Wrong Way:
fn main() {
let my_num = 2;
// This line will throw an error
my_num = my_num + 1;
println!("{}", my_num);
}
Correct Way:
fn main() {
let mut my_num = 2;
my_num = my_num + 1;
// This line will print '3'
println!("{}", my_num);
}
Unsafe Code
Hello World Program in C in Rust:
extern "C" {
fn printf(input: &str);
}
fn main() {
unsafe {
printf("Hello, World!");
}
}
Important Links:
Rust Programming Language Homepage
Rust Playground
Ben Eater: Comparing C to machine language <WARNING: YouTube Hosted>
Wikipedia Pages:
Rust Programming Language Wikipedia article
Resource Acquisition Is Initialization (RAII)
Contact Me
Email: izzyleibowitz at pm dot me
Mastodon: at blackernel at nixnet dot social