Rust Konzepte fertig

This commit is contained in:
Daniel Kluge 2022-06-17 23:47:10 +02:00
parent 7f1994ed9a
commit 8790d6159a
2 changed files with 101 additions and 3 deletions

View File

@ -1,7 +1,7 @@
:experimental:
:docdatetime: 2022-06-14T14:33:52.489Z
:docdatetime: 2022-06-17T21:46:42.272Z
= Concepts
= Konzepte
https://doc.rust-lang.org/book/ch03-00-common-programming-concepts.html[Link zum Buch]
@ -191,3 +191,101 @@ x[0] = 16; // x = [16, 15, 15]
Im Gegensatz zu C-Arrays wird allerdings vor dem Zugriff auf das Array ein Check durchgeführt.
Während C also auch außerhalb des Arrays Speicher lesen kann (mindestens theoretisch), kommt es in Rust dann zu einem Compilerfehler oder einer Runtime-Panic.
== Funktionen
Sind wie normale Funktionen in C auch. Keyword ist `fn`.
Beispiel:
[source, Rust]
----
fn calculate_sum(a: i32, b: i32) -> i64 {
// Statements können natürlich normal genutzt werden
let c: i64 = a + b
// Wenn das letzte Statement kein ";" am Ende hat, ist es die Rückgabe
// Quasi "return c;"
// "let ...." returnt aber nichts
// Könnte aber auch einfach nur "a + b" sein.
c
}
----
== Kommentare
Schon häufiger in den Beispielen - einfach `//`.
Es gibt auch noch spezielle Docstrings, aber das kommt später.
== Kontrollfluss
=== `if`
- ohne runde Klammern um die Bedingung
- _immer_ geschweifte Klammern, zumindest kein Beispiel ohne
- Geht auch als short-if bei `let x = if condition { 5 } else { 6 }`
- Bedingung *muss* ein bool sein!
=== `loop`
- Basically ein `while (true)`
- `break` und `continue`
- Können labels haben. Dann kann `break 'label` genutzt werden
Beispiel für labels:
[source, Rust]
----
fn main() {
'outer: loop {
let mut a = 1;
loop {
a += 1;
if a == 10 {
break 'outer;
}
}
}
}
----
==== Ergebnis aus der Loop
`break` mit Wert ist Rückgabe.
Einfaches Beispiel:
[source, Rust]
----
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("{}", result); // 20
}
----
=== `while`
- nutzt auch keine runden Klammern
- sonst normal
=== `for`
Looped durch eine Collection (wie in Python).
[source, Rust]
----
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a {
println!("{}", element);
}
}
----

View File

@ -39,7 +39,7 @@
{ "title": "00 - Hello World", "filename": "00 - Hello World"},
{ "title": "01 - Cargo", "filename": "01 - Cargo"},
{ "title": "02 - Higher-Lower-Game", "filename": "02 - Higher-Lower-Spiel"},
{ "title": "03 - Konzepte", "filename": "03 - Concepts"}
{ "title": "03 - Cheatsheet", "filename": "03 - Concepts"}
]
}
]