1.9 KiB
Executable File
Aufgabe 4: Kopierbefehl
(In dieser Aufgabe geht es nicht mehr unbedingt nur um Iteratoren!)
In dieser Aufgabe sollt ihr den cp
Befehl nachprogrammieren ... Ok, nur einen Teil davon.
Euer Programm soll zwei Dateinamen als command line parameter erhalten und dann von der einen Datei in die andere kopieren:
$ mycp Cargo.toml Peter.toml
Euer Programm soll also mycp
heißen!
Wenn ihr es richtig gemacht habt, könnt ihr mit dem Befehl cargo install
euer Programm global auf eurem System installieren (die Executable wird in ~/.cargo/bin
kopiert, welches im $PATH
ist). Damit ihr es aber nicht immer neu installieren müsst, um es auszuprobieren, könnt ihr es aber natürlich mit cargo run
testen. Die Kommandozeilenparameter werden nach den --
übergeben:
$ cargo run -- Cargo.toml Peter.toml
Die Hauptschritte zur Implementation sind folgende:
a) Parsen der Kommandozeilenparameter
Diese müssen zunächst eingelesen werden und auf Gültigkeit überprüft werden (richtige Anzahl?). Dies soll in einer eigenen Funktion geschehen, in der keine Ausgabe auf dem Terminal geschehen soll. Alle Informationen müssen im Rückgabewert kodiert sein.
Hierzu ist sicherlich das std::env
Modul interessant.
b) Kopieren des Dateiinhalts
Falls die Parameter korrekt waren, muss jetzt von einer Datei in die andere kopiert werden. Das soll ebenfalls in einer eigenen Funktion passieren, welche keine Ausgaben auf dem Terminal macht.
Dabei sollten natürlich auch Fehler behandelt werden. Das heißt aber nicht, dass ihr selber viel Code programmieren müsst; wahrscheinlich ist die Implementierung kürzer, als ihr anfangs vermuten würdet.
Wie man schon vermutet, wird hier das std::io
Modul eine Rolle spielen.
Nur die Funktion std::fs::copy()
dürft ihr nicht nutzen! Das wäre ja zu einfach ;-)