programmieren-in-rust/aufgaben/sheet06/task1/README.md

42 lines
1.3 KiB
Markdown
Raw Normal View History

2016-11-30 00:50:23 +01:00
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.