1.9 KiB
1.9 KiB
2025-03-14
first steps
- rustup: Tool für Rust Versionsmanagement
- Compiler 'rustc' erzeugt Binary
- Cargo: Rust Build System und Package Manager
- 'Cargo.toml' ist die Projektkonfig mit Dependencies
- Standard Build ist ein Debug build ('target/debug')
- 'cargo check': Prüfen, ob Code compiliert, ohne zu Bauen.
- 'cargo build --release': Bauen mit Optimierungen aber längerer Compilezeit ('target/release')
Guessing Game
- was ist ein prelude ?
- was ist ein trait im gegensatz zu einem module?
- trait = interface
- shadowing
- zumindest gibt es ein explizites
let
- Schatten halten sich an blockgrenzen
- Deklarative Macros haben ein
!
- Ersatz für Overloading - assoziierte Funktion (String::new) == objektorientiert?
- (Mit Typ) Assoziierte Funktion aufrufen mit
::
. Bsp:let mut s = String::new()
- wir sind mal gespannt, ob das auch über packagegrenzen hinweg geht
- behandlung v. integer-overflow fehlern wir nicht erzwungen - nur gewarnt ??
- Referenz mit
&
. Bsp:io::stdin().read_line(&mut guess)
1.. Referenzen sind standardmäßig immutable, daher hier&mut guess
statt&guess
- Cargo Dependencies folgen semantischer Versionierung:
1.
rand = "0.8.5"
bedeutet^0.8.5
: mindestens 0.8.5 aber unter 0.9.0 - If-Expressions direkt für assignments verwenden :) 1.. auch loop
concepts
- Können in libs Keywords definiert werden? <--- äääh nein? :P
- 1_00 == 100
- snake_case_code_convention
- Destructuring durch Pattern Matching:
let (x, y, z) = tup;
println!("The value of y is: {y}");
()
: Tupel ohne Werte. Repräsentiert leeren Wert oder leeren Return Type.- arrays sind
0
based if number {
tut nicht, juhu :-) +1 :)- if : Bedingung ohne Klammern
- Loop Rückgabewerte mit
break
:break 5;
- Tupel ist compound data tuple und kann auch von Funktionen zurück gegeben werden.
- Typinferenz