You are on page 1of 92

How To Learn Rust

5/19/2016

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


talks.edunham.net/oscon2016
oscon2016@edunham.net

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Two Talks In One

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Thanks

@anjuan @glasnt @jackyboen @megamatman


@Azuxul @gmebarthe @joaomello @Mike_Fal
@bulba_zord @hectorjcorrea @jsookha @proogey
@echorand @iamed2 @l.d.walker @robn
@EnamsuoBarry @IanBertolacci @llogiq @sundayayandokun
@FranklinWaller @Ignoreintuition @macaronique @Vinatorul
@gansai9 @itsAhmedWay @mayaskme http://agares.info/

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Today’s Audience

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Your Next Language

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Curiosity

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Features

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Work

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Why?

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Pattern Recognition

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Your Next Language

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Learning Styles

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Tasks You Enjoy
vs

Tasks You Despise

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Successful Projects
vs

Unsuccessful Projects

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


What will you achieve?
&
When?

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Which Language?

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Popularity

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Community

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Resources

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Features

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Old & New Concepts

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


“My next language _____”

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


It’s worth taking time from...

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Family? Hobbies? Sleep?

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Capture Your Motivation

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


12 Study Techniques

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


1) Language Docs

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


2) Similar Languages

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


3) Community Support

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


4) Write Real Code

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


5) Read The Books

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


6) Examine Examples

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


7) Find Good Tools

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


8) Read Real Code

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


9) Write Toy Programs

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


10) Google & Stackoverflow

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


11) Watch Lectures & Courses

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


12) Maintain Enthusiasm

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Troubleshooting

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Community Interaction

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Time

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Language features

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Advice

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Learn by Doing

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Practice Consistently

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Start with the Basics

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Build Something You Love

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Respect Languages’ Differences

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


It Gets Better

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Learning Rust!

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Are You Ready?

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


www.rust-lang.org
1.0 on May 15, 2015

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Systems Programming.
Safe, Concurrent, Fast.

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Memory Safety, no GC.
Ownership + Lifetimes.
Types & Traits.

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


“I am learning @rustlang to ___”

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


1) Language Docs

doc.rust-lang.org

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


2) Similar Languages

github.com/ctjhoa/rust-learning/

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


3) Community Support

www.rust-lang.org/community.html
users.rust-lang.org
#rust-beginners on irc.mozilla.org

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


4) Write Real Code

GitHub search “is:open is:issue language:rust”


starters.servo.org

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


5) Read The Books

doc.rust-lang.org/book
O’Reilly, Programming Rust
Packt Publishing, Rust Essentials

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


6) Examine Examples

rustbyexample.com
Carol’s rustlings
Rosetta Code

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


7) Find Good Tools

play.rust-lang.org
Clippy and Rustfmt
IDE support

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


8) Read Real Code

crates.io popular libraries


The Rust Compiler
Rust in Production

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


9) Write Toy Programs

Rust by Example
exercism.io
Project Euler
Hackerrank

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


10) Google & Stackoverflow

Stackoverflow Rust tag

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


11) Watch Lectures & Courses

rust-learning list

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


12) Maintain Enthusiasm

Rust subreddit
This Week In Rust

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Errors are here to help

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Basic Syntax

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Scope Errors!

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Punctuation Errors

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Unused Variables

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Hey, Pythonistas!

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Hey, Pythonistas!

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Primitive types (built-in)

bool ●
f32, f64

char ●
isize, usize

i8, i16, i32, ●
str
i64 ●
tuple

u8, u16, u32,
u64

https://doc.rust-lang.org/book/primitive-types.html

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Function Type Signatures

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Function with a type signature

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Synonymous return

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Type Errors

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Anything you can add...
https://doc.rust-lang.org/std/ops/trait.Add.html

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Traits

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Additional Resources

https://doc.rust-lang.org/book/traits.html

http://blog.rust-lang.org/2015/05/11/traits.html

http://rustbyexample.com/trait.html

http://pcwalton.github.io/blog/2012/08/08/a-gentle-i
ntroduction-to-traits-in-rust/

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Ownership Rules


No borrow may outlive value's owner


Exactly 1 mutable reference (&mut T)

OR

As many read-only references (&T) as you
want

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Giving Away a Value

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Given away means gone

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Borrow the value

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Make a mutable copy

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Review

Only owner can access value

1 mutable reference or unlimited read-only
references to each value

Borrow may not outlive owner

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Additional Resources

http://doc.rust-lang.org/stable/book/ownership.html

http://doc.rust-lang.org/stable/book/references-and-borrowing.ht
ml

Why the to_string()?
http://hermanradtke.com/2015/05/03/string-vs-str-in-rust-function
s.html

http://rustbyexample.com/trait/clone.html

https://www.reddit.com/r/rust/comments/2xxjda/when_should_m
y_type_be_copy/

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


It Gets Better

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net


Thank You
talks.edunham.net/oscon2016
Photos at https://www.flickr.com/photos/143305168@N08/favorites

talks.edunham.net/oscon2016 @qedunham oscon2016@edunham.net

You might also like