Submit Search
Upload
Introduction to Rust
•
4 likes
•
1,043 views
Jean Carlo Machado
Follow
A introduction to rust talk I used on FISL 17.
Read less
Read more
Software
Report
Share
Report
Share
1 of 65
Download now
Download to read offline
Recommended
Why rust?
Why rust?
Mats Kindahl
Deep drive into rust programming language
Deep drive into rust programming language
Vigneshwer Dhinakaran
The Rust Programming Language: an Overview
The Rust Programming Language: an Overview
Roberto Casadei
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Codemotion
An introduction to Rust: the modern programming language to develop safe and ...
An introduction to Rust: the modern programming language to develop safe and ...
Claudio Capobianco
Rust Primer
Rust Primer
Knoldus Inc.
Rust system programming language
Rust system programming language
robin_sy
Rust vs C++
Rust vs C++
corehard_by
Recommended
Why rust?
Why rust?
Mats Kindahl
Deep drive into rust programming language
Deep drive into rust programming language
Vigneshwer Dhinakaran
The Rust Programming Language: an Overview
The Rust Programming Language: an Overview
Roberto Casadei
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Codemotion
An introduction to Rust: the modern programming language to develop safe and ...
An introduction to Rust: the modern programming language to develop safe and ...
Claudio Capobianco
Rust Primer
Rust Primer
Knoldus Inc.
Rust system programming language
Rust system programming language
robin_sy
Rust vs C++
Rust vs C++
corehard_by
Rust: Systems Programming for Everyone
Rust: Systems Programming for Everyone
C4Media
Introduction to Rust language programming
Introduction to Rust language programming
Rodolfo Finochietti
Rust Programming Language
Rust Programming Language
Jaeju Kim
Rust-lang
Rust-lang
Anthony Broad-Crawford
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
安齊 劉
Rust
Rust
Chih-Hsuan Kuo
Rust: Unlocking Systems Programming
Rust: Unlocking Systems Programming
C4Media
Rust
Rust
Naga Dinesh
The Rust Programming Language
The Rust Programming Language
Mario Alexandro Santini
Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
yann_s
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
BillyEllis3
Coroutines in Kotlin. In-depth review
Coroutines in Kotlin. In-depth review
Dmytro Zaitsev
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Rustを支える技術
Rustを支える技術
Keisuke Umezawa
Php internal architecture
Php internal architecture
Elizabeth Smith
JVM code reading -- C2
JVM code reading -- C2
ytoshima
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
NAVER D2
H2O - the optimized HTTP server
H2O - the optimized HTTP server
Kazuho Oku
Servo: The parallel web engine
Servo: The parallel web engine
Bruno Abinader
Machine Learning in Rust with Leaf and Collenchyma
Machine Learning in Rust with Leaf and Collenchyma
Michael Hirn
More Related Content
What's hot
Rust: Systems Programming for Everyone
Rust: Systems Programming for Everyone
C4Media
Introduction to Rust language programming
Introduction to Rust language programming
Rodolfo Finochietti
Rust Programming Language
Rust Programming Language
Jaeju Kim
Rust-lang
Rust-lang
Anthony Broad-Crawford
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
安齊 劉
Rust
Rust
Chih-Hsuan Kuo
Rust: Unlocking Systems Programming
Rust: Unlocking Systems Programming
C4Media
Rust
Rust
Naga Dinesh
The Rust Programming Language
The Rust Programming Language
Mario Alexandro Santini
Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
yann_s
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
BillyEllis3
Coroutines in Kotlin. In-depth review
Coroutines in Kotlin. In-depth review
Dmytro Zaitsev
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Rustを支える技術
Rustを支える技術
Keisuke Umezawa
Php internal architecture
Php internal architecture
Elizabeth Smith
JVM code reading -- C2
JVM code reading -- C2
ytoshima
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
NAVER D2
H2O - the optimized HTTP server
H2O - the optimized HTTP server
Kazuho Oku
What's hot
(20)
Rust: Systems Programming for Everyone
Rust: Systems Programming for Everyone
Introduction to Rust language programming
Introduction to Rust language programming
Rust Programming Language
Rust Programming Language
Rust-lang
Rust-lang
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
Rust
Rust
Rust: Unlocking Systems Programming
Rust: Unlocking Systems Programming
Rust
Rust
The Rust Programming Language
The Rust Programming Language
Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Coroutines in Kotlin. In-depth review
Coroutines in Kotlin. In-depth review
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
Rustを支える技術
Rustを支える技術
Php internal architecture
Php internal architecture
JVM code reading -- C2
JVM code reading -- C2
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
H2O - the optimized HTTP server
H2O - the optimized HTTP server
Viewers also liked
Servo: The parallel web engine
Servo: The parallel web engine
Bruno Abinader
Machine Learning in Rust with Leaf and Collenchyma
Machine Learning in Rust with Leaf and Collenchyma
Michael Hirn
Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017
pramode_ce
Type-Directed TDD in Rust: a case study using FizzBuzz
Type-Directed TDD in Rust: a case study using FizzBuzz
Franklin Chen
Casa paquera info venta español e ingles - copy
Casa paquera info venta español e ingles - copy
RANCHOS Y CONSTRUCCIONES M&M
Dearye automatic hydraulic brick production line
Dearye automatic hydraulic brick production line
Zhengzhou Deyi Heavy Machine Manufacturing Co.,Ltd.
اسئله الناس البابا شنوده - الجزء السادس
اسئله الناس البابا شنوده - الجزء السادس
Ibrahimia Church Ftriends
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
Ibrahimia Church Ftriends
Inv pres q42013_-_final
Inv pres q42013_-_final
CNOServices
Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...
Al Baha University
Khemjira portfolio 2558
Khemjira portfolio 2558
Khemjira_P
Презентация ООО "Эдмаркет"
Презентация ООО "Эдмаркет"
Андрей Панкратов
Nokia 6630
Nokia 6630
Anuj Kumar Bajpai
масленица
масленица
Светлана Коломиец
عبد الناصر والإخوان المسلمون عبد الله إمام
عبد الناصر والإخوان المسلمون عبد الله إمام
Ibrahimia Church Ftriends
Hinduism Origins
Hinduism Origins
ssclasstorremar
Surviving the Storm
Surviving the Storm
Ag 1 Source
Viewers also liked
(17)
Servo: The parallel web engine
Servo: The parallel web engine
Machine Learning in Rust with Leaf and Collenchyma
Machine Learning in Rust with Leaf and Collenchyma
Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017
Type-Directed TDD in Rust: a case study using FizzBuzz
Type-Directed TDD in Rust: a case study using FizzBuzz
Casa paquera info venta español e ingles - copy
Casa paquera info venta español e ingles - copy
Dearye automatic hydraulic brick production line
Dearye automatic hydraulic brick production line
اسئله الناس البابا شنوده - الجزء السادس
اسئله الناس البابا شنوده - الجزء السادس
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
القس راضى عطاالله. أنا أكون معك دراسه سفر يشوع
Inv pres q42013_-_final
Inv pres q42013_-_final
Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...
Khemjira portfolio 2558
Khemjira portfolio 2558
Презентация ООО "Эдмаркет"
Презентация ООО "Эдмаркет"
Nokia 6630
Nokia 6630
масленица
масленица
عبد الناصر والإخوان المسلمون عبد الله إمام
عبد الناصر والإخوان المسلمون عبد الله إمام
Hinduism Origins
Hinduism Origins
Surviving the Storm
Surviving the Storm
Similar to Introduction to Rust
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
Giovanni Fernandez-Kincade
Cassandra Client Tutorial
Cassandra Client Tutorial
Joe McTee
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache Mesos
Joe Stein
ES6 Overview
ES6 Overview
Bruno Scopelliti
Coscup2021-rust-toturial
Coscup2021-rust-toturial
Wayne Tsai
Diagnosing Open-Source Community Health with Spark-(William Benton, Red Hat)
Diagnosing Open-Source Community Health with Spark-(William Benton, Red Hat)
Spark Summit
The Joy of ServerSide Swift Development
The Joy of ServerSide Swift Development
Giordano Scalzo
The Joy Of Server Side Swift Development
The Joy Of Server Side Swift Development
Giordano Scalzo
The Joy of Server Side Swift Development
The Joy of Server Side Swift Development
Giordano Scalzo
DevSecCon Asia 2017: Guillaume Dedrie: A trip through the securitiy of devops...
DevSecCon Asia 2017: Guillaume Dedrie: A trip through the securitiy of devops...
DevSecCon
Hi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdf
aniyathikitchen
Ti1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and Scopes
Eelco Visser
Groovy
Groovy
Zen Urban
Kotlin from-scratch 3 - coroutines
Kotlin from-scratch 3 - coroutines
Franco Lombardo
The Swift Compiler and Standard Library
The Swift Compiler and Standard Library
Santosh Rajan
SAX, DOM & JDOM parsers for beginners
SAX, DOM & JDOM parsers for beginners
Hicham QAISSI
Coding Ajax
Coding Ajax
Ted Husted
From android/java to swift (3)
From android/java to swift (3)
allanh0526
Stupid Awesome Python Tricks
Stupid Awesome Python Tricks
Bryan Helmig
Algorithm and Programming (Introduction of dev pascal, data type, value, and ...
Algorithm and Programming (Introduction of dev pascal, data type, value, and ...
Adam Mukharil Bachtiar
Similar to Introduction to Rust
(20)
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
Cassandra Client Tutorial
Cassandra Client Tutorial
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache Mesos
ES6 Overview
ES6 Overview
Coscup2021-rust-toturial
Coscup2021-rust-toturial
Diagnosing Open-Source Community Health with Spark-(William Benton, Red Hat)
Diagnosing Open-Source Community Health with Spark-(William Benton, Red Hat)
The Joy of ServerSide Swift Development
The Joy of ServerSide Swift Development
The Joy Of Server Side Swift Development
The Joy Of Server Side Swift Development
The Joy of Server Side Swift Development
The Joy of Server Side Swift Development
DevSecCon Asia 2017: Guillaume Dedrie: A trip through the securitiy of devops...
DevSecCon Asia 2017: Guillaume Dedrie: A trip through the securitiy of devops...
Hi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdf
Ti1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and Scopes
Groovy
Groovy
Kotlin from-scratch 3 - coroutines
Kotlin from-scratch 3 - coroutines
The Swift Compiler and Standard Library
The Swift Compiler and Standard Library
SAX, DOM & JDOM parsers for beginners
SAX, DOM & JDOM parsers for beginners
Coding Ajax
Coding Ajax
From android/java to swift (3)
From android/java to swift (3)
Stupid Awesome Python Tricks
Stupid Awesome Python Tricks
Algorithm and Programming (Introduction of dev pascal, data type, value, and ...
Algorithm and Programming (Introduction of dev pascal, data type, value, and ...
More from Jean Carlo Machado
Python clean code for data producs
Python clean code for data producs
Jean Carlo Machado
Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python
Jean Carlo Machado
Search microservice
Search microservice
Jean Carlo Machado
Git avançado
Git avançado
Jean Carlo Machado
Functional php
Functional php
Jean Carlo Machado
Why functional programming matters
Why functional programming matters
Jean Carlo Machado
Clean code v3
Clean code v3
Jean Carlo Machado
Clean Code V2
Clean Code V2
Jean Carlo Machado
Review articles bio inspired algorithms
Review articles bio inspired algorithms
Jean Carlo Machado
Limitações do HTML no Desenvolvimento de Jogos Multiplataforma
Limitações do HTML no Desenvolvimento de Jogos Multiplataforma
Jean Carlo Machado
Clean code
Clean code
Jean Carlo Machado
More from Jean Carlo Machado
(11)
Python clean code for data producs
Python clean code for data producs
Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python
Search microservice
Search microservice
Git avançado
Git avançado
Functional php
Functional php
Why functional programming matters
Why functional programming matters
Clean code v3
Clean code v3
Clean Code V2
Clean Code V2
Review articles bio inspired algorithms
Review articles bio inspired algorithms
Limitações do HTML no Desenvolvimento de Jogos Multiplataforma
Limitações do HTML no Desenvolvimento de Jogos Multiplataforma
Clean code
Clean code
Recently uploaded
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
ICS
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
kotipi9215
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
gurkirankumar98700
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
kalichargn70th171
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
soniya singh
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
kalichargn70th171
DNT_Corporate presentation know about us
DNT_Corporate presentation know about us
Dynamic Netsoft
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
soniya singh
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Alberto González Trastoy
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
aditisharan08
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
kaushalgiri8080
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
OnePlan Solutions
What is Binary Language? Computer Number Systems
What is Binary Language? Computer Number Systems
JheuzeDellosa
EY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
Neo4j
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
stazi3110
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
VICTOR MAESTRE RAMIREZ
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Christina Lin
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
Christina Lin
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
Power Karaoke
Recently uploaded
(20)
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
DNT_Corporate presentation know about us
DNT_Corporate presentation know about us
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
What is Binary Language? Computer Number Systems
What is Binary Language? Computer Number Systems
EY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
Introduction to Rust
1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction To Rust “The
type safety of Haskell, the concurrency of Erlang, and the speed of C++”
2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About github.com/jeanCarloMachado twitter.com/JeanCarloMachad jeancarlomachado.com.br compufacil.com.br
3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust Generic multiparadigm system’s
programming language.
4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust Generic multiparadigm system’s
programming language. Version 1.0 in May of 2015, 1.10 currently.
5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust Generic multiparadigm system’s
programming language. Version 1.0 in May of 2015, 1.10 currently. Platforms: ▶ ARM ▶ Apple ▶ MIPS ▶ PC ▶ Raspberry PI ▶ TIVA ▶ Tessel 2 ▶ Others
6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Who Built? Mozilla Research
team (2009) ▶ Graydon Hoare https://github.com/graydon ▶ Brian Anderson https://github.com/brson ▶ Patrick Walton https://github.com/pcwalton ▶ Alex Crichton https://github.com/alexcrichton
7.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Built for Patrick Walton:
Rust should focus on the same domain as C++ does. ▶ Browser Engines ▶ Games ▶ IOT ▶ OS’s
8.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Who Uses? ▶ Servo:
Browser engine ▶ Dropbox ▶ Coursera ▶ Skylight: New relic for rails ▶ Redox: Unix based OS ▶ Tikv: Distributed database ▶ Many more
9.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . In the wild Figure
1:who uses
10.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interest Figure 2:Interest
11.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Strengths ▶ Security ▶ Performance ▶
Fine grained control
12.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Weaknesses ▶ Fight the
borrow checker ▶ Huge syntax ▶ Relatively new
13.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust vs the
world
14.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Go ▶ fast compilation ▶
simplicity ▶ imperative foundations ▶ higher level (Haskell,OCaml,C#,F#)
15.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust ▶ slow compilation ▶
long list of features ▶ functional foundations ▶ lower level (C++,C,D)
16.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 3:Servo performance
17.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 4:Performance
18.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rustc ▶ Written in
Rust ▶ Uses LLVM ▶ MIR ▶ Zero cost abstractions
19.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax
20.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fn fib(n: u64)
-> u64 { match n { 0 | 1 => n, n => fib(n - 1) + fib(n - 2) } }
21.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fn gcd(mut n:
u64, mut m: u64) -> u64 { assert!(n != 0 && m != 0); while m != 0 { if m < n { let t = m; m=n; n=t; } m = m % n; } n }
22.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enums enum Elements { Square, Circle }
23.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structs struct Point3d { x:
i32, y: i32, z: i32, } let mut point = Point3d { x: 0, y: 0, z: 0 };
24.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Traits struct Circle { x:
f64, y: f64, radius: f64, } trait HasArea { fn area(&self) -> f64; } impl HasArea for Circle { fn area(&self) -> f64 { std::f64::consts::PI * (self.radius * self.radius) } }
25.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generics enum Option<T> { Some(T), None, } enum
Result<T, E> { Ok(T), Err(E), }
26.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generics enum Option<T> { Some(T), None, } enum
Result<T, E> { Ok(T), Err(E), } let foo: Option<f64> = Some(5.0f64); let foo: Option<u8> = None; let foo: Result<u8> = Ok(8); let foo: Result<i16> = Err(9);
27.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generic Functions fn min<T:
Ord>(a: T, b: T) -> T { if a <= b { a } else { b } }
28.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generic Functions fn min<T:
Ord>(a: T, b: T) -> T { if a <= b { a } else { b } } Inline specialization min(10i8, 20) == 10; //T is i8 min(10, 20u32) == 10; //T is u32 min("abc", "xyz") == "abc"; //strings are Ord
29.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Composite types dependency use
std::fmt::Debug; fn foo<T: Clone + Debug>(x: T) { x.clone(); println!("{:?}", x); }
30.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Refined implementation filter impl<R:
Num, C: Num> Add<Matrix<R, C>> for Matrix<R, C> { ... }
31.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lazy evaluation (1..) .filter(|&x| x
% 2 == 0) .find(|x| *x > 42) .take(5) .collect::<Vec<i32>>();
32.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Imperative let mut file
= match File::open(file_path) { Ok(file) => file, Err(err) => return Err(err.to_string()), }; let mut contents = String::new(); if let Err(err) = file.read_to_string(&mut contents) { return Err(err.to_string()); } let n: i32 = match contents.trim().parse() { Ok(n) => n, Err(err) => return Err(err.to_string()), }; Ok(2 * n)
33.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Functional File::open(file_path) .map_err(|err| err.to_string()) .and_then(|mut file|
{ let mut contents = String::new(); file.read_to_string(&mut contents) .map_err(|err| err.to_string()) .map(|_| contents) }) .and_then(|contents| { contents.trim().parse::<i32>() .map_err(|err| err.to_string()) }) .map(|n| 2 * n)
34.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory
35.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust way ▶ No
null pointer deferences. ▶ No dangling pointers ▶ No buffer overruns
36.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Garbage collector ▶ Non
deterministic ▶ Runtime checking ▶ Lack of control
37.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Garbage collector ▶ Non
deterministic ▶ Runtime checking ▶ Lack of control Out of scope deallocation
38.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ownership let v =
vec![1, 2, 3]; let v2 = v; println!("v[0] is: {}", v[0]);
39.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ownership let v =
vec![1, 2, 3]; let v2 = v; println!("v[0] is: {}", v[0]); error: use of moved value: `v` println!("v[0] is: {}", v[0]);
40.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ownership let v =
vec![1, 2, 3]; let v2 = v; println!("v[0] is: {}", v[0]); error: use of moved value: `v` println!("v[0] is: {}", v[0]); let v2 = &v;
41.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrowing let v =
vec![]; foo(&v); fn foo(v: &Vec<i32>) { println!("{}", v); //works v.push(5); //fails }
42.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrowing let v =
vec![]; foo(&v); fn foo(v: &Vec<i32>) { println!("{}", v); //works v.push(5); //fails } error: cannot borrow immutable borrowed content `*v` as mutable v.push(5);
43.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrowing Mutable let mut
x = 5; { let y = &mut x; *y += 1; } println!("{}", x);
44.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrowing Rules ▶ a
borrowed value can’t have greater lifetime ▶ one or more immutable references (&T) to a resource, ▶ exactly one mutable reference (&mut T).
45.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lifetimes fn firsts<'a 'b>
(x: &'a Vec<i32> y: &'b Vec<i32>) -> (&'a i32, &'b i32) { return (&x[0], &y[0]); }
46.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concurrency Shared mutable state
(root of all evil)
47.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concurrency Shared mutable state
(root of all evil) 4 feet tall
48.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concurrency Shared mutable state
(root of all evil) 4 feet tall Other languages tries to solve the mutable.
49.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concurrency Shared mutable state
(root of all evil) 4 feet tall Other languages tries to solve the mutable. Rust solves the shared
50.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Default thread let thread1
= std::thread::spawn(|| { println!("foo"); return 999; }); let thread2 = std::thread::spawn(|| { println!("bar"); return 666; }); assert_eq!(try!(thread.join()), 999); assert_eq!(try!(thread.join()), 666);
51.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shared thread fn main()
{ let mut x = 1; let thread1 = std::thread::scoped(|| {x + 8}); let thread2 = std::thread::scoped(|| {x + 27}); assert_eq!(thread1.join() + thread2.join(), 37); }
52.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shared mutable thread //arc
= safe reference count //mutex = mutable data with locking let data = Arc::new(Mutex::new(vec![1,2,3])); for i in 0..3 { let data = data.clone(); thread::spawn(move || { let mut data = data.lock().unwrap(); data[0] += i; }); } thread::sleep(Duration::from_millis(50));
53.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tests fn prime_factors(mut num:
i64) -> Vec<i64> { let mut result = vec![]; let mut i = 2; while num > 1 { while num % i == 0 { result.push(i); num /= i; } i +=1; } result }
54.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #[test] fn prime_factors_of_48() { assert_eq!(prime_factors(48),
[2, 2, 2, 2, 3]); }
55.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tests #[test] #[should_panic(expected = "assertion
failed")] fn it_works() { assert_eq!("Hello", "world"); }
56.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tests as Documentation //!
``` //! assert_eq!(4, adder::add_two(2)); //! ```
57.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macros let x: Vec<u32>
= vec![1, 2, 3];
58.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macros let x: Vec<u32>
= vec![1, 2, 3]; let x: Vec<u32> = { let mut temp_vec = Vec::new(); temp_vec.push(1); temp_vec.push(2); temp_vec.push(3); temp_vec };
59.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementation macro_rules! vec { (
$( $x:expr ),* ) => { { let mut temp_vec = Vec::new(); $( temp_vec.push($x); )* temp_vec } }; }
60.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cargo Package manager run/build/test/bench/update/init
61.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Libs ▶ rustup -
croscompilling toolset ▶ clap - parse command line args ▶ iron - Web framework ▶ helix - ruby classes in Rust ▶ racer - auto-complete-er
62.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Beyond ▶ Module system ▶
FFI Foreign functions interfaces ▶ Unsafe ▶ Much more!
63.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cool Resources ▶ Blog:
https://blog.rust-lang.org/ ▶ Rust by Example: http://rustbyexample.com/ ▶ Rust Book: https://doc.rust-lang.org ▶ This week in Rust https://this-week-in-rust.org ▶ Writing an OS in Rust: http://os.phil-opp.com/
64.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . References ▶ Platforms: https://hacks.Mozilla.org/2015/05/diving-into-rust-for-the-first-time/ ▶ Comparison:
https://www.rust-lang.org/faq.html#other-languages ▶ Rust Programming Language: http://www.slideshare.net/jaejukim9/rust-programming-language ▶ State of Rust: https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html ▶ Why Rust: ▶ Which programs are fastest: http://benchmarksgame.alioth.debian.org/u64q/which-programs-are- fastest.html http://www.oreilly.com/programming/free/files/why-rust.pdf
65.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exit(0)
Download now