mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2024-11-18 02:48:58 +01:00
42 lines
1.3 KiB
Markdown
Executable File
42 lines
1.3 KiB
Markdown
Executable File
Aufgabe 1: Hilfsfunktionen
|
|
==========================
|
|
|
|
In dieser Aufgabe soll eine Library-Crate (Cargo Projekt) erstellt werden,
|
|
welche ein paar kleine, aber nützliche Funktionalitäten bereitstellt.
|
|
|
|
Für alle drei Funktionen/Methoden soll ein Unittest geschrieben werden. Alle
|
|
Unittests liegen in dem `tests` Untermodul der Crate; alles andere kann aber
|
|
im Wurzelmodul definiert sein. *Hinweis*: Mit `cargo test` können alle
|
|
Unittests ausgeführt werden.
|
|
|
|
|
|
### a) `clamp()`
|
|
|
|
Diese Funktion nimmt drei Parameter: einen Wert sowie `min` und `max`.
|
|
Die Funktion returned einfach den gegebenen Wert, solange er zwischen `min` und
|
|
`max` liegt. Falls der gegebene Wert jedoch kleiner als `min` ist, wird `min`
|
|
returned; das gleiche entsprechend mit `max`.
|
|
|
|
Die Funktion soll so allgemein wie möglich formuliert werden und keine
|
|
genauen Typen festlegen.
|
|
|
|
|
|
### b) Summe und Produkt
|
|
|
|
Die Funktion nimmt zwei Argumente and und liefert sowohl die Summe als auch
|
|
das Produkt dieser beiden Werte zurück. Auch diese Funktion soll möglichst
|
|
allgemein formuliert werden.
|
|
|
|
|
|
### c) Extension Trait
|
|
|
|
Wir würden gerne `bool`-Variablen sehr einfach in ein `Option<T>` umwandeln
|
|
können, also z.B. so einen Code aufrufen können:
|
|
|
|
```rust
|
|
true.into_option(3); // Some(3)
|
|
false.into_option("susi"); // None
|
|
```
|
|
|
|
Fügt die Methode zu `bool` mit Hilfe eines Extension Traits hinzu.
|