Πώς να μάθετε το Rust χωρίς εγκατάσταση λογισμικού

Σε αυτό το άρθρο, θα μάθουμε πώς να χρησιμοποιούμε το GitHub Actions για να μάθουμε το Rust από το πρόγραμμα περιήγησής σας. Θα κωδικοποιήσουμε, θα δημιουργήσουμε, θα δοκιμάσουμε, θα εκτελέσουμε και θα κυκλοφορήσουμε όλα από μια ιστοσελίδα. Δεν απαιτείται λογισμικό! Μάθετε με το GitHub ή ακολουθήστε μας στο Twitter.

Το Rust είναι μια από τις πιο καυτές γλώσσες προγραμματισμού σήμερα. Οι άλφα geeks το λατρεύουν. Είναι η πιο αγαπημένη γλώσσα προγραμματισμού του Stackoverflow τα τελευταία 4 χρόνια στη σειρά.

Ένα από τα πιο μοναδικά και αγαπημένα χαρακτηριστικά του Rust είναι ο επιθετικός του μεταγλωττιστής που σας βοηθά να διασφαλίσετε την ορθότητα και την ασφάλεια πριν ακόμη εκτελεστεί το πρόγραμμα. Ως αποτέλεσμα, οι προγραμματιστές Rust μπορούν να γράψουν προγράμματα υψηλής απόδοσης αλλά ασφαλή. Το Rust εξαλείφει ολόκληρες κατηγορίες σφαλμάτων προγραμματισμού, ειδικά εκείνα που δυσκολεύουν τον εντοπισμό σφαλμάτων χρόνου εκτέλεσης.

Εάν δεν το έχετε δοκιμάσει, δοκιμάστε το! Είναι μαγικό. Πιστεύω ότι ο Rust θα μπορούσε να είναι η επόμενη Java ή Ruby - η γλώσσα προγραμματισμού που πρέπει να μάθουν όλοι στο μέλλον.

Ωστόσο, η εκμάθηση του Rust απαιτεί συνήθως να εγκαταστήσετε μια δέσμη εργαλείων γραμμής εντολών στον υπολογιστή σας. Ο μεταγλωττιστής Rust είναι αργός, επειδή ολόκληρο το παράδειγμα Rust έχει ρυθμιστεί για να αναλύσει βαθιά τον πηγαίο κώδικα και να εντοπίσει σφάλματα κατά το χρόνο μεταγλώττισης, αντί να καταρρεύσει στο χρόνο εκτέλεσης.

Τα διαδικτυακά Rust IDE, όπως το Rust Playground και το REPL.it, είναι απλά εργαλεία που δεν εκμεταλλεύονται πλήρως τα οικοσυστήματα Rust των στόχων και των βιβλιοθηκών τρίτων κατασκευαστών.

Ίσως αναρωτιέστε - μπορώ να δοκιμάσω και να μάθω το Rust χωρίς να χρειάζεται να εγκαταστήσω όλα αυτά τα πακέτα λογισμικού στον υπολογιστή μου;

Λοιπόν, με τις ενέργειες του GitHub, μπορείτε! Μπορείτε να μάθετε και να πειραματιστείτε με τον κώδικα Rust απευθείας στο πρόγραμμα περιήγησης ιστού. Ας αρχίσουμε!

Το GitHub Actions διευκολύνει την αυτοματοποίηση όλων των ροών εργασίας του λογισμικού σας, τώρα με παγκόσμιας κλάσης CI / CD. Δημιουργήστε, δοκιμάστε και αναπτύξτε τον κωδικό σας απευθείας από το GitHub. Πραγματοποιήστε αναθεωρήσεις κώδικα, διαχείριση υποκαταστημάτων και ζητήστε τη δοκιμαστική εργασία με τον τρόπο που θέλετε. Ο πηγαίος κώδικας και οι ενέργειες ροής εργασίας για το παράδειγμα Hello World βρίσκονται σε αυτό το αποθετήριο GitHub.

Γειά σου Κόσμε

Αρχικά, δημιουργήστε ένα νέο αποθετήριο GitHub και προσθέστε ένα αρχείο προέλευσης Rust. Ας προσθέσουμε ένα src/main.rsαρχείο με το ακόλουθο περιεχόμενο.

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

Στη συνέχεια, επιστρέψτε στον ριζικό /κατάλογο του αποθετηρίου GitHub και προσθέστε ένα Cargo.tomlαρχείο. Αυτό το αρχείο περιγράφει πώς το σύστημα φορτίου Rust πρέπει να κατασκευάζει και να συσκευάζει το έργο μας.

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

Τώρα έχουμε ένα πλήρες έργο Rust. Ας δημιουργήσουμε και τρέξτε το τώρα.

Δράσεις Github

Στην καρτέλα Ενέργειες του GitHub, μπορούμε να προσθέσουμε ροές εργασίας που σχετίζονται με αυτό το έργο. Αυτές είναι ενέργειες που εκτελεί αυτόματα το Github όταν συμβαίνουν συγκεκριμένα γεγονότα, όπως push code ή commit. Στην περίπτωσή μας, θα θέλαμε το GitHub να δημιουργήσει και να τρέξει αυτόματα και να μας main.rsδείξει τα αποτελέσματα.

Οι ενέργειες ροής εργασίας και οι ενεργοποιητές συμβάντων τους ορίζονται σε ymlαρχεία κάτω από τον .github/workflowsκατάλογο. Μπορείτε να γράψετε τα δικά σας ymlαρχεία ή να επιλέξετε από ένα από τα έτοιμα πρότυπα.

Εδώ επιλέγουμε το πρότυπο Rust. Το GitHub σάς επιτρέπει να επεξεργαστείτε το rust.ymlαρχείο πριν το ελέγξετε στο αποθετήριο.

Ας περάσουμε ένα λεπτό εδώ για να εξηγήσουμε πώς λειτουργούν οι δράσεις GitHub Actions. Το προεπιλεγμένο rust.ymlαρχείο το λέει αυτό

  • Κάθε φορά που ένας χρήστης σπρώχνει τον κώδικα ή δέχεται αιτήματα έλξης σε αυτό το αποθετήριο, rust.ymlθα ενεργοποιούνται οι ενέργειες σε αυτήν τη ροή εργασίας.
  • Η ροή εργασίας θα δημιουργήσει μια εικονική μηχανή που θα τρέχει το πιο πρόσφατο λειτουργικό σύστημα Ubuntu. Σε αυτό το σύστημα Ubuntu, θα εκτελέσει τα ακόλουθα βήματα.
  • Θα ελέγξει τον κωδικό από το masterυποκατάστημα.
  • Θα εκτελέσει την cargo build --verboseεντολή για μεταγλώττιση και δημιουργία του κώδικα Rust.
  • Θα εκτελέσει την cargo test --verboseεντολή για την εκτέλεση των δοκιμαστικών περιπτώσεων.
  • Όλες οι τυπικές εξόδους και οι έξοδοι της κονσόλας στο σύστημα Ubuntu από τις δύο παραπάνω εντολές θα καταγράφονται από το GitHub Actions και θα εμφανίζονται στον Ιστό.

Μπορείτε να επεξεργαστείτε την τελευταία γραμμή rust.ymlγια εκτέλεση cargo run, η οποία εκτελεί το μεταγλωττισμένο δυαδικό πρόγραμμα. Το ενημερωμένο rust.ymlαρχείο μας έχει ως εξής.

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

Τώρα όποτε πατάτε κώδικα σε αυτό το αποθετήριο, rust.ymlεκτελούνται οι ενέργειες στο . Μπορείτε να δείτε τα αποτελέσματα στην καρτέλα Ενέργειες.

Μπορείτε να κάνετε κλικ σε ένα αποτέλεσμα και να κάνετε κλικ στην καρτέλα build στα αριστερά για να δείτε τις λεπτομέρειες. Οι ενότητες κατασκευής και εκτέλεσης παρέχουν τις πιο σχετικές λεπτομέρειες. Η ενότητα Run δείχνει επιτυχημένη εκτύπωση του hello world!

Στη συνέχεια, μπορείτε να προσθέσετε εξαρτήσεις τρίτων Cargo.tomlκαι να δημιουργήσετε σύνθετες εφαρμογές Rust στο main.rs. Κάθε φορά που κάποιος πιέζει κώδικα, θα μπορούμε να δούμε τα αποτελέσματα.

Ανάπτυξη βάσει δοκιμής (TDD)

Φυσικά, πολύ λίγοι προγραμματιστές εκτελούν πραγματικά τα προγράμματά τους για να εκτυπώσουν κείμενο στην κονσόλα. Τα cargo runπαραπάνω είναι απλώς μια παράσταση. Στην πραγματικότητα, οι περισσότεροι προγραμματιστές γράφουν συναρτήσεις και δοκιμάζουν περιπτώσεις για αυτές τις συναρτήσεις. Η πιο συχνή εργασία μετά την κατάρτιση και τη δημιουργία είναι η εκτέλεση δοκιμαστικών περιπτώσεων. Ας δούμε πώς γίνεται.

Δημιουργήστε ένα νέο αποθετήριο GitHub και, στη συνέχεια, προσθέστε ένα src/lib.rsαρχείο παρακάτω. Όπως μπορείτε να δείτε, ορίζει μια συνάρτηση Rust και μερικές περιπτώσεις δοκιμής. Μπορεί να κατασκευαστεί και να κυκλοφορήσει ως πακέτο βιβλιοθήκης Rust.

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")); } }

Στη συνέχεια, επιστρέψτε στον ριζικό /κατάλογο του αποθετηρίου GitHub και προσθέστε το ακόλουθο Cargo.tomlαρχείο.

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

Κάντε κλικ στην καρτέλα Ενέργειες και προσθέστε την προεπιλεγμένη ροή εργασίας Rust. Όπως θυμάστε, τελειώνει η προεπιλεγμένη ροή εργασίας Rust cargo test, κάτι που ακριβώς χρειαζόμαστε εδώ.

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

Ο Δρ Michael Yuan είναι ο συγγραφέας 5 βιβλίων σχετικά με τη μηχανική λογισμικού. Το τελευταίο του βιβλίο Building Blockchain Apps δημοσιεύθηκε από τον Addison-Wesley τον Δεκέμβριο του 2019. Ο Dr. Yuan είναι ο συνιδρυτής της Second State, μιας εκκίνησης που χρηματοδοτείται από το VC και φέρνει τις τεχνολογίες WebAssembly και Rust σε εφαρμογές cloud, blockchain και AI. Επιτρέπει στους προγραμματιστές να αναπτύξουν γρήγορες, ασφαλείς, φορητές και χωρίς Rust λειτουργίες Rust στο Node.js.

Πριν από το Second State, ο Δρ. Yuan ήταν εδώ και πολύ καιρό συνεισφέρων ανοιχτού κώδικα στα Red Hat, JBoss και Mozilla Εκτός λογισμικού, ο Δρ. Yuan είναι κύριος ερευνητής στα Εθνικά Ινστιτούτα Υγείας, με πολλαπλά βραβεία έρευνας για τον καρκίνο και την έρευνα για τη δημόσια υγεία. Κατέχει διδακτορικό στην αστροφυσική από το Πανεπιστήμιο του Τέξας στο Ώστιν.