summaryrefslogtreecommitdiff
path: root/notes.md
blob: 15fa7f049ff27e60d1556bb93c9072491c90d45e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Notes for talk on Rust
======================

* Gauge audience knowledge level
    * Who knows what Rust is, who has tried to write some, who is "Rust
      curious"
    * Disclaim C++ comparisons as being naïve
* Introduce basic Rust
    * Rough history of Rust - Mozilla, replace C++ in Firefox
    * C/C++ish syntax
    * Some of the type system from ML/Haskell
    * Systems programming language, from embedded to apps
* Fast, Safe, Easy, Pick Three
    * What does 'Fast' mean in this
        * Optimising compiler 
        * Monomorphisation rather than generics at runtime
        * Zero-cost abstractions vs. C++
    * What about 'Easy'
    * What is 'safety' about
        * Memory safety, 'fearless concurrency', etc.
* Ownership and borrowing
    * Use the Vec example
    * Lifetimes
* Data types
    * Struct
    * Enum
* Error handling
    * Panic (remember to note that only the current Thread panics, unwinding
      too)
    * Result
* Traits
    * Like haskell type classes
    * Different from interfaces, but not entirely
    * Can provide default implementations, have associated types, etc.
* Syntactical sugar
    * Basic operators
    * ?
    * for loops
    * Macros and proc-macros
* Walk through the iterator trait a bit
    * High level
    * Similar to Python's iterator protocol
    * Compiles into as close to nothing as possible
* Software ecosystem
    * Splitting into crates
    * crates.io
    * rustup and cargo