-
das muss so heftig sein
Autor: thuering86 13.02.23 - 16:01
Du hast da viele verschiedene Anwendungen in C, jahrzehntealt, mit über zweihunderttausend lines of code und schreibst das alles neu in Rust, vermutlich auch mit OOP.
Oder macht man das (halb-)automatisiert? -
Re: das muss so heftig sein
Autor: Boereck 13.02.23 - 18:18
Rust ist keine OOP Sprache. Es gibt Structs und Traits (Interfaces). Du kannst Traits für Structs implementieren. Structs können nicht voneinander Erben. Bei Traits kannst du default Implementierungen für Funktionen angeben, die durch Implementierungen für Structs durch spezialisierte Versionen ausgetauscht/überschrieben werden können. Und du kannst angeben, dass wenn ein Trait implementiert wird, auch andere implementiert werden müssen, was einer Vererbung zumindest ähnlich ist. Im Allgemeinen geht Rust mit dem Trend, dass Komposition der Vererbung vorzuziehen ist. Klassische OOP Programmierung ist das also nicht.
Die Implementierung ist "clean room" basierend auf der CLI Doku und Test Suite der GNU Coreutils (hier ist die Test Coverage: https://uutils.github.io/user/test_coverage.html). Den GNU Coreutils Code könnten sie auch nicht als Grundlage nehmen, da der GPLv3 lizenziert ist und die uutils unter der MIT Lizenz.
Grundsätzlich wäre es schon möglich C Quelltext mit C2Rust ( https://c2rust.com/ ) nach unsafe Rust zu übersetzen und dann nach und nach zu safe Rust zu refactoren. Ob das so viel Spaß macht ist eine andere Frage, der resultierende Quelltext wäre erst einmal sehr un-idiomatischer Rust Code.



