Το Rust είναι μια από τις καλύτερες επιλογές για την κατασκευή εφαρμογών CLI. Ξεκινήστε δημιουργώντας μια βασική εφαρμογή ανάκτησης δεδομένων κρυπτογράφησης.
Το CLI (Command Line Interfaces) είναι ζωτικής σημασίας για την ανάπτυξη λογισμικού και τη διαχείριση του συστήματος. Τα CLI είναι ελαφριά προγράμματα βασισμένα σε κείμενο που προσφέρουν έναν βελτιωμένο τρόπο αλληλεπίδρασης με υπολογιστές που είναι ευνοϊκοί τόσο για προγραμματιστές όσο και για ισχυρούς χρήστες για περιπτώσεις πολλαπλών χρήσεων, συμπεριλαμβανομένου του αυτοματισμού, του σεναρίου και του τηλεχειριστηρίου διαχείριση.
Το Rust κερδίζει δημοτικότητα για τη δημιουργία εφαρμογών CLI. Το Rust παρέχει ισχυρές δυνατότητες, όπως λεπτομερή έλεγχο της κατανομής μνήμης και την ασφάλεια νημάτων, την ασφάλεια της μνήμης, τη συγχρονικότητα και τον παραλληλισμό που μπορείτε να αξιοποιήσετε για να δημιουργήσετε ισχυρές εφαρμογές CLI. Το Rust μπορεί επίσης να υπερηφανεύεται για ένα ακμάζον οικοσύστημα βιβλιοθηκών και πλαισίων προσαρμοσμένων ρητά για τη δημιουργία εφαρμογών CLI.
Ξεκινώντας Δημιουργώντας εφαρμογές CLI με Rust
Υπάρχουν πολλά πακέτα τρίτων για τη δημιουργία εφαρμογών CLI στο Rust, μεταξύ των οποίων Χειροκρότημα, StructOpt, και Termion κιβώτια. Αυτά τα κιβώτια παρέχουν τα χαρακτηριστικά που χρειάζεστε για να αναπτύξετε σύγχρονα εργαλεία CLI.
Επίσης, η Rust παρέχει α std:: env crate στην τυπική βιβλιοθήκη του που παρέχει λειτουργικότητα για εργασία με μεταβλητές περιβάλλοντος και ορίσματα γραμμής εντολών. ο std:: env Το crate προσφέρει μια σειρά μεθόδων και τύπων για εργασία με περιβάλλοντα με τρόπο ανεξάρτητο από πλατφόρμα.
Χρησιμοποιώντας την std:: env κιβώτιο, τα προγράμματα Rust μπορούν να αλληλεπιδράσουν με το περιβάλλον και να προσαρμόσουν τη συμπεριφορά τους με βάση διάφορους παράγοντες, συμπεριλαμβανομένων των μεταβλητών περιβάλλοντος, των ορισμάτων γραμμής εντολών και της τρέχουσας λειτουργίας Ευρετήριο.
Εκτελέστε αυτήν την εντολή για να δημιουργήσετε ένα νέο έργο Rust για την εφαρμογή σας CLI με το Cargo, το εργαλείο διαχείρισης πακέτων της Rust:
φορτίο νέο crypto_cli
Θα μάθετε πώς να δημιουργείτε μια εφαρμογή CLI που καλεί το API του Coinmarketcap με το Reqwest κλουβί που παρέχει χαρακτηριστικά για την κατασκευή Αιτήματα HTTP στο Rust.
Ανοιξε το δικό σου Cargo.toml αρχείο και προσθέστε το reqwest και Τόκιο κιβώτια στις εξαρτήσεις του έργου σας:
[εξαρτήσεις]
Τόκιο = { έκδοση = "1.15", χαρακτηριστικά = ["γεμάτος"] }
reqwest = { έκδοση = "0.11", χαρακτηριστικά = ["json"] }
serde = { έκδοση = "1.0", χαρακτηριστικά = ["αντλώ"] }
serde_json = "1.0"
ο Τόκιο Το crate είναι μια ασύγχρονη βιβλιοθήκη χρόνου εκτέλεσης που διαλειτουργεί με reqwest για ασύγχρονο προγραμματισμό. ο serde και serde_json κιβώτια βοηθούν με Σειριοποίηση JSON και αποσειριοποίηση.
Στο src φάκελο του έργου Rust, δημιουργήστε api.rs και cli.rs αρχεία στα οποία θα εφαρμόσετε τις λειτουργίες κλήσης API και CLI.
αγγίξτε src/api.rs src/cli.rs
Η εντολή θα πρέπει να δημιουργήσει τα επιθυμητά αρχεία στον κατάλογο εργασίας του έργου σας. Αφού γράψετε τις λειτουργίες στα καθορισμένα αρχεία τους για τον διαχωρισμό των ανησυχιών, θα καλέσετε τις λειτουργίες στο κύριος λειτουργία σε σας κύρια.ρσ αρχείο.
Δημιουργία αιτημάτων API στο API του CoinMarketCap με το Reqwest
Το API του CoinMarketCap σας επιτρέπει να έχετε πρόσβαση και να ενσωματώνετε δεδομένα κρυπτονομισμάτων στις εφαρμογές τους. Το API παρέχει τελικά σημεία για καταχωρίσεις, προσφορές αγοράς, πληροφορίες ανταλλαγής, εργαλεία μετατροπής, ιστορικά δεδομένα και μεταδεδομένα.
Όταν συνδέεστε, μπορείτε να εγγραφείτε για έναν λογαριασμό CoinMarketCap και να ανακτήσετε το κλειδί API στη σελίδα προγραμματιστή του Coinmarketcap. Μπορείτε επίσης να ανατρέξετε στην τεκμηρίωση για λεπτομερείς οδηγίες και όρια τιμών.
Για να κάνετε ένα αίτημα API στο /v2/cryptocurrency/quotes/latest τελικό σημείο που επιστρέφει την τελευταία προσφορά αγοράς για ένα ή περισσότερα κρυπτονομίσματα, θα πρέπει να ορίσετε structs για τα δεδομένα που θέλετε να εξαγάγετε από το API και καθορίστε τα χαρακτηριστικά με το χαρακτηριστικό παράγωγο του Serde.
Στη συνέχεια, μπορείτε να ζητήσετε ένα API στο τελικό σημείο και να χρησιμοποιήσετε το serde_json crate για να αποσειροποιήσετε τα δεδομένα JSON στη δομή για ευκολότερες λειτουργίες σε τύπους δεδομένων Rust.
Εδώ είναι το ορισμός κατασκευής που ανακτά το ταυτότητα, όνομα, σύμβολο, και παραθέτω, αναφορά δεδομένα των καθορισμένων κρυπτονομισμάτων
#[παραγωγή (Εντοπισμός σφαλμάτων, Αποσειροποίηση, Σειριακή)]
structApiResponse {
δεδομένα: Δεδομένα,
}#[παραγωγή (Εντοπισμός σφαλμάτων, Αποσειροποίηση, Σειριακή)]
structΔεδομένα {
// Προσθέστε πεδία που χρειάζεστε από το αντικείμενο δεδομένων
#[serde (μετονομασία = "1")]
crypto_1: Κρυπτονόμισμα,#[serde (μετονομασία = "2")]
crypto_2: Κρυπτονόμισμα,#[serde (μετονομασία = "3")]
crypto_3: Κρυπτονόμισμα,#[serde (μετονομασία = "4")]
crypto_4: Κρυπτονόμισμα,
}#[παραγωγή (Εντοπισμός σφαλμάτων, Αποσειροποίηση, Σειριακή)]
structΚρυπτονόμισμα {
ταυτότητα: u32,
όνομα: Σειρά,
σύμβολο: Σειρά,
// Προσθέστε άλλα πεδία όπως απαιτείται
απόσπασμα: Απόσπασμα,
}#[παραγωγή (Εντοπισμός σφαλμάτων, Αποσειροποίηση, Σειριακή)]
structΠαραθέτω, αναφορά {
USD: Λεπτομέρειες προσφοράς,
}
#[παραγωγή (Εντοπισμός σφαλμάτων, Αποσειροποίηση, Σειριακή)]
structQuoteΛεπτομέρειες {
τιμή: f64,
volume_24h: f64,
// Προσθέστε άλλα πεδία όπως απαιτείται
}
Το API επιστρέφει δεδομένα που μπορεί να είναι περισσότερα από όσα χρειάζεστε, αλλά με το serde κλουβί, μπορείτε να καθορίσετε τα ακριβή δεδομένα που χρειάζεστε, όπως φαίνεται παραπάνω.
Τώρα, μπορείτε να ζητήσετε το τελικό σημείο με το Reqwest δημιουργώντας έναν νέο πελάτη που κάνει το αίτημα GET με τις απαιτούμενες παραμέτρους.
χρήση reqwest:: Πελάτης;
χρήση reqwest:: Σφάλμα;καπηλειόασυγχρονισμόςστκρυπτο() -> Αποτέλεσμα {
αφήνω πελάτης = Πελάτης:: new();αφήνω url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
αφήνω params = [
("ταυτότητα", "1,2,3,4"),
("μετατρέπω", "USD"), // Μετατροπή αγοραίας αξίας σε USD
];αφήνω answer = client.get (url)
.επί κεφαλής("X-CMC_PRO_API_KEY", "ΤΟ ΚΛΕΙΔΙ ΣΑΣ API ΕΔΩ")
.query(¶ms)
.στείλετε().αναμένω?;
;αφήνω αποτέλεσμα: ApiResponse = serde_json:: from_str(&*response.text().αναμένω?;).ξεδιπλώνω();
println!("{:#?}", αποτέλεσμα);
Εντάξει(())
}
ο κρυπτο Η συνάρτηση είναι μια ασύγχρονη συνάρτηση με δυνατότητα tokio που ζητά το τελικό σημείο με το client.get λειτουργία μετά τη δημιουργία μιας παρουσίας πελάτη με το Πελάτης:: νέος μέθοδος.
ο επί κεφαλής κλήση συνάρτησης στην περίπτωση δημιουργίας αιτημάτων λαμβάνει το κλειδί API σας, το ερώτηση η συνάρτηση λαμβάνει τις παραμέτρους και το στείλετε η λειτουργία στέλνει το αίτημα.
ο κρυπτο Η συνάρτηση αποσειριοποιεί την απόκριση JSON με το serde_json's from_str μέθοδο που δέχεται μια συμβολοσειρά JSON.
Τέλος, το κρυπτο Η λειτουργία εκτυπώνει το αποτέλεσμα της λειτουργίας αποσειριοποίησης στην κονσόλα.
Ανάκτηση ορισμών CLI στο Rust
Στο δικό σου cli.rs αρχείο, θα εισαγάγετε το κρυπτο λειτουργία από το api.rs αρχείο και καλέστε τη συνάρτηση εάν ο χρήστης δηλώνει "crypto" ως όρισμα κατά την εκτέλεση του έργου με το τρέξιμο φορτίου εντολή.
Δείτε πώς μπορείτε να χρησιμοποιήσετε το std:: env συνάρτηση για την ανάκτηση του ορίσματος από τη γραμμή εντολών:
χρήση std:: env;
χρήση crate:: api:: crypto;καπηλειόασυγχρονισμόςστcli() {
αφήνω args: Vec<Σειρά> = env:: args().collect();
αν args.len() > 1 &&args[1] == "κρυπτο" {
crypto().αναμένω.ξεδιπλώνω();
} αλλού {
println!("Ακυρη εντολή. Χρήση: cargo run crypto");
}
}
ο cli Η συνάρτηση ανακτά όλα τα ορίσματα από τη γραμμή εντολών με το env:: args().collect() λειτουργία. ο αν-αλλιώς Η δήλωση ελέγχει εάν υπάρχει ένα πρόσθετο όρισμα, "crypto". Εάν η υπό όρους αξιολογεί true, το cli η συνάρτηση καλεί το κρυπτο λειτουργία; διαφορετικά, το cli Η λειτουργία εκτυπώνει μια συμβολοσειρά στην κονσόλα.
Τέλος, μπορείτε να καλέσετε το cli λειτουργία στο κύριος λειτουργία. Πρέπει να προσθέσετε το #[tokio:: κύρια] χαρακτηριστικό από τότε κύριος Οι λειτουργίες δεν μπορούν να είναι ασύγχρονες στο Rust.
mod api;
mod cli;
χρήση κλουβί:: cli:: cli;
#[tokio:: κύρια]
ασυγχρονισμόςστκύριος() {
cli().αναμένω;
}
ο κύριος η συνάρτηση καλεί το cli λειτουργία με το αναμένω συνάρτηση που αναστέλλει την εκτέλεση μέχρι το αποτέλεσμα της α Μελλοντικός είναι έτοιμο.
Εδώ είναι το αποτέλεσμα της εκτέλεσης του cargo run crypto εντολή:
Μπορείτε να δημιουργήσετε εξελιγμένες εφαρμογές Ιστού στο Rust
Η Rust είναι μια ευέλικτη γλώσσα προγραμματισμού με πολλές περιπτώσεις χρήσης και εφαρμογές. Μπορείτε να αξιοποιήσετε πλαίσια ιστού τρίτων όπως το Actix, το Rocket και το Warp για τη δημιουργία εφαρμογών ιστού στο Rust. Αυτά τα πλαίσια παρέχουν τις περισσότερες από τις λειτουργίες που απαιτούνται για τη δημιουργία σύγχρονων εφαρμογών ιστού.