Wie man Rost lernt, ohne Software zu installieren

In diesem Artikel erfahren Sie, wie Sie mit GitHub-Aktionen Rust in Ihrem Webbrowser lernen. Wir werden alles von einer Webseite aus codieren, erstellen, testen, ausführen und freigeben. Keine Software erforderlich! Lerne mit GitHub oder folge uns auf Twitter.

Rust ist heute eine der heißesten Programmiersprachen. Alpha-Freaks lieben es. Es ist die beliebteste Programmiersprache von Stackoverflow seit 4 Jahren in Folge.

Eine der einzigartigsten und beliebtesten Funktionen von Rust ist der aggressive Compiler, mit dem Sie Korrektheit und Sicherheit gewährleisten können, bevor das Programm überhaupt ausgeführt wird. Infolgedessen können Rust-Entwickler hochleistungsfähige und dennoch sichere Programme schreiben. Rust beseitigt ganze Klassen von Programmierfehlern, insbesondere die schwer zu debuggenden Laufzeitfehler.

Wenn Sie es nicht ausprobiert haben, versuchen Sie es! Es ist magisch. Ich glaube, Rust könnte das nächste Java oder Ruby sein - die Programmiersprache, die jeder in Zukunft lernen muss.

Um Rust zu lernen, müssen Sie jedoch normalerweise eine Reihe von Befehlszeilentools auf Ihrem Computer installieren. Der Rust-Compiler ist langsam, da das gesamte Rust-Paradigma darauf ausgelegt ist, den Quellcode gründlich zu analysieren und Fehler beim Kompilieren zu finden, anstatt zur Laufzeit abzustürzen.

Online-Rust-IDEs wie Rust Playground und REPL.it sind einfache Tools, die das Rust-Ökosystem von Compiler-Zielen und -Bibliotheken von Drittanbietern nicht voll ausnutzen.

Sie fragen sich vielleicht: Kann ich versuchen, Rust zu lernen, ohne all diese Softwarepakete auf meinem Computer installieren zu müssen?

Nun, mit GitHub-Aktionen können Sie! Sie können Rust-Code direkt in Ihrem Webbrowser lernen und damit experimentieren. Lass uns anfangen!

Mit GitHub Actions können Sie alle Ihre Software-Workflows jetzt mit erstklassiger CI / CD auf einfache Weise automatisieren. Erstellen, testen und implementieren Sie Ihren Code direkt von GitHub aus. Stellen Sie sicher, dass Codeüberprüfungen, Zweigstellenverwaltung und Problem-Triaging nach Ihren Wünschen funktionieren. Der Quellcode und die Workflow-Aktionen für das Hello World-Beispiel finden Sie in diesem GitHub-Repository.

Hallo Welt

Erstellen Sie zunächst ein neues GitHub-Repository und fügen Sie eine Rust-Quelldatei hinzu. Fügen wir eine src/main.rsDatei mit dem folgenden Inhalt hinzu.

fn main() { println!("Hello, world!"); }

Kehren Sie anschließend zum Stammverzeichnis /des GitHub-Repositorys zurück und fügen Sie eine Cargo.tomlDatei hinzu. Diese Datei beschreibt, wie das Rust-Frachtsystem unser Projekt bauen und verpacken soll.

[package] name = "hello" version = "0.1.0" authors = ["ubuntu"] edition = "2018" [dependencies]

Jetzt haben wir ein komplettes Rust-Projekt. Lassen Sie es uns jetzt erstellen und ausführen.

Github-Aktionen

Auf der Registerkarte Aktionen von GitHub können wir Workflows hinzufügen, die diesem Projekt zugeordnet sind. Dies sind Aktionen, die Github automatisch ausführt, wenn bestimmte Ereignisse auftreten, z. B. Code-Push oder Commit. In unserem Fall möchten wir, dass GitHub unsere automatisch erstellt und ausführt main.rsund uns die Ergebnisse zeigt.

Die Workflow-Aktionen und ihre Ereignisauslöser werden in ymlDateien unter dem .github/workflowsVerzeichnis definiert. Sie können Ihre eigenen ymlDateien schreiben oder aus einer der vorgefertigten Vorlagen auswählen.

Hier wählen wir die Rust-Vorlage. Mit GitHub können Sie die rust.ymlDatei bearbeiten , bevor Sie sie in das Repository einchecken.

Nehmen wir uns hier eine Minute Zeit, um zu erklären, wie GitHub-Aktionen funktionieren. Die Standarddatei rust.ymlsagt das

  • Immer wenn ein Benutzer Code pusht oder Pull-Anforderungen in dieses Repository akzeptiert, werden die Aktionen in diesem rust.ymlWorkflow ausgelöst.
  • Der Workflow erstellt eine virtuelle Maschine, auf der das neueste Ubuntu-Betriebssystem ausgeführt wird. Auf diesem Ubuntu-System werden dann die folgenden Schritte ausgeführt.
  • Der Code wird aus der masterVerzweigung ausgecheckt.
  • Der cargo build --verboseBefehl zum Kompilieren und Erstellen des Rust-Codes wird ausgeführt.
  • Der cargo test --verboseBefehl zum Ausführen der Testfälle wird ausgeführt.
  • Alle Standard- und Konsolenausgaben auf dem Ubuntu-System aus den beiden oben genannten Befehlen werden von GitHub Actions erfasst und im Web angezeigt.

Sie können die letzte rust.ymlauszuführende Zeile bearbeiten cargo run, in der das kompilierte Binärprogramm ausgeführt wird. Unsere aktualisierte rust.ymlDatei lautet wie folgt.

name: Rust on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/[email protected] - name: Build run: cargo build --verbose - name: Run run: cargo run

Wenn Sie jetzt Code in dieses Repository übertragen, werden die Aktionen rust.ymlausgeführt. Sie können die Ergebnisse auf der Registerkarte Aktionen anzeigen.

Sie können auf ein Ergebnis klicken und links auf die Registerkarte "Erstellen" klicken, um die Details anzuzeigen. Die Abschnitte zum Erstellen und Ausführen enthalten die wichtigsten Details. Der Run-Bereich zeigt das erfolgreiche Drucken der Hallo-Welt!

Als Nächstes können Sie Abhängigkeiten von Drittanbietern hinzufügen Cargo.tomlund komplexe Rust-Anwendungen in main.rs erstellen. Jedes Mal, wenn jemand Code drückt, können wir die Ergebnisse sehen.

Test Driven Development (TDD)

Natürlich führen nur sehr wenige Entwickler ihre Programme aus, um Text auf der Konsole zu drucken. Das cargo runObige ist nur eine Show. In der Realität schreiben die meisten Entwickler Funktionen und Testfälle für diese Funktionen. Die häufigste Aufgabe nach dem Kompilieren und Erstellen ist das Ausführen von Testfällen. Mal sehen, wie es gemacht wird.

Erstellen Sie ein neues GitHub-Repository und fügen Sie src/lib.rsunten eine Datei hinzu. Wie Sie sehen können, definiert es eine Rust-Funktion und einige Testfälle. Es kann als Rust-Bibliothekspaket erstellt und freigegeben werden.

pub fn say(s: &str) -> String { let r = String::from("hello "); return r + s; } #[cfg(test)] mod tests { use super::*; #[test] fn say_hello() { let result = say("ssvm"); assert!(result.contains("hello ssvm")); } }

Kehren Sie dann zum Stammverzeichnis /des GitHub-Repositorys zurück und fügen Sie die folgende Cargo.tomlDatei hinzu.

[package] name = "hello" version = "0.1.0" authors = ["ubuntu"] edition = "2018" [lib] name = "hello_lib" path = "src/lib.rs" crate-type =["cdylib"] [dependencies]

Klicken Sie auf die Registerkarte Aktionen und fügen Sie den Standard-Rust-Workflow hinzu. Wie Sie sich erinnern, endet der Standard-Rust-Workflow mit cargo testgenau dem, was wir hier benötigen.

The workflow runs every time new code is pushed into this repository. You can click open a successful build, and see the output from the build and test actions.

What's next

Now you can experiment with your Rust code, and have GitHub build, test, and run it for you with complete console outputs, for free and without ever leaving your browser!

Resources

  • Learn to program in Rust
  • Learn more about GitHub Actions
  • Of course, the best way to run Rust programs on the server is inside a WebAssembly Virtual Machine. Checkout the open source Second State VM for that!
  • Learn about the BUIDL online IDE to code and deploy decentralized web apps on public blockchains

About the author

Dr. Michael Yuan is the author of 5 books on software engineering. His latest book Building Blockchain Apps was published by Addison-Wesley in Dec 2019. Dr. Yuan is the co-founder of Second State, a VC-funded startup that brings WebAssembly and Rust technologies to cloud, blockchain, and AI applications. It enables developers to deploy fast, safe, portable, and serverless Rust functions on Node.js.

Prior to Second State, Dr. Yuan was a long time open source contributor at Red Hat, JBoss, and Mozilla. Outside of software, Dr. Yuan is a Principal Investigator at the National Institutes of Health, with multiple research awards on cancer and public health research. He holds a PhD in astrophysics from the University of Texas at Austin.