= Rust Tutorial
Matthias Benkard <matthias.benkard@egym.de>
// Meta
:experimental:
:data-uri:
:sectnums:
:toc:
:stem:
:toclevels: 2
:description: 
:keywords: MI, MSW, eGym, Rust
// Settings
:icons: font
:source-highlighter: prettify
:doctype: book

These are the lecture notes for the introduction to the Rust
programming language held at eGym in 2019.


= Part I: The Language

== Crates & Cargo

== Basic Types
=== `u8`, `i32`, `f64`
[source,rust,subs="verbatim,attributes"]
----
let a = 100;
let b = 1.0;
let c = 100u8;

let d = 2*a;
----

=== Structs
=== `impl Struct`
=== Enums

== References & Lifetimes
=== `&` vs `&mut`
=== `'static`
=== `Box`, `Rc`

== Polymorphism
=== Traits
Ex.: `ToString`

=== Generics
=== `dyn Trait`

== Tidbits
=== Clippy
=== Lambdas
=== Doctests


= Part II: The Standard Library

== Error Handling

== More Types
=== `String`, `&str`
=== `Vec`, `&[]`
=== `Fn`
=== `Iter`

== More Traits
=== `impl Trait`
=== `Sized`

== Safe Concurrency
=== `Sync`
=== `Send`
=== `Arc`

