Programmēšana

Rūsas apmācība: sāciet darbu ar valodu Rust

Pēdējo pāris gadu laikā Rusts no Mozilla darbinieka laboratorijā radušās zinātkāri ir kļuvis par spēcīgu pretendentu nākamās paaudzes vietējo lietotņu un tukša metāla risinājumu rakstīšanai. Bet šie sasniegumi nāk no tā, ka Rust nodrošina savu rīku ķēdi un komponentu pārvaldības sistēmu, kā arī savas iezīmes un dīvainības.

Šajā rakstā ir aprakstīti pamati, kā iestatīt darba vidi Rust, konfigurēt IDE un maksimāli izmantot rīku komplektu, ko Rust nodrošina lietotņu izstrādei.

Saistītais video: drošākas programmatūras izstrāde ar Rust

Ātri apgūstiet jaunpienācēju Rust, kas paredzēts ātras, sistēmas līmeņa programmatūras izveidei. Šis divu minūšu animētais skaidrotājs parāda, kā Rust apiet nepatīkamos atmiņas un pārvaldības programmēšanas jautājumus.

Izprotiet Rust nakts, beta un stabilas versijas

Rust rīku ķēde galvenokārt sastāv no Rust kompilatora, rustckopā ar rīkiem Rust instalācijas pārvaldīšanai. Tā kā Rust tiek pastāvīgi attīstīts, Rust rīku ķēde ir izstrādāta tā, lai to būtu viegli atjaunināt.

Programmatūras projekti bieži tiek nodrošināti, izmantojot vairākus kanālus, lai nodalītu koda stabilo un beta versiju. Rust rīku ķēde darbojas tāpat, piedāvājot trīs kanālus savai instrumentu ķēdei:

  • Stabils: Galvenie izlaidumi, kas parādās apmēram ik pēc sešām nedēļām.
  • Beta: Kandidāti nākamajam lielākajam punktu izlaidumam, kas parādās biežāk.
  • Katru nakti: Tiešākā konstrukcija ar piekļuvi vismodernākajām funkcijām, bet nav garantiju par to stabilitāti.

Kā norādīja izstrādātājs Karols Kučmarskis, vislabāk ir domāt par nakts Rust kanālu kā par savu valodu. Dažas Rust funkcijas, piemēram, apkopošana WebAssembly, ir pieejamas tikai nakts kanālā, un tās var aktivizēt tikai ar īpašām kompilatoru direktīvām. Citiem vārdiem sakot, viņi pat neapkopos beta vai stabilos kanālos.

Tas ir pēc konstrukcijas, jo nav garantijas, ka nakts funkcijas tiks atbalstītas jebkur citur. Tomēr daudzas no šīm funkcijām galu galā tiek pārceltas no nakts kanāla un tiek izlaistas beta un stabilās versijās. (Piemēram, kompilācija WebAssemble darbojas stabili no Rust 1.30.)

Īsumā:

  1. Izmantot stabils par faktisko ražošanas darbu.
  2. Izmantot beta lai pārbaudītu pašreizējo programmatūru ar gaidāmajām versijām, lai redzētu, vai jaunināšanas laikā kaut kas var salūzt.
  3. Izmantot tikai katru nakti eksperimentiem ar smilškastē ar Rust jaunākajām funkcijām.

Izvēlieties OS Rust izstrādei

Rust atbalsta visas trīs galvenās platformas - Windows, Linux un MacOS - gan 32, gan 64 bitu iemiesojumos, katrai no tām izmantojot oficiālos bināros failus. Daudzām citām platformām ir arī oficiālās binārās programmas, taču tām nav tāda paša līmeņa automatizētās testēšanas pārklājuma. Šīs otrās klases platformas ietver ARMv6 un ARMv7 operētājsistēmām iOS, Android un Linux; MIPS Linux un MIPS64 Linux; X86 iOS, Windows un Linux 32 bitu izdevumi; un WebAssemble. Citas platformas, piemēram, Windows XP vai eksperimentālo HaikuOS, tiek atbalstītas, izmantojot neoficiālus veidojumus.

Rust izstrādes komanda ir paziņojusi, ka tā nav viena no Rust misijām, lai būtu pēc iespējas plašāk pārnēsājama. Piemēram, lai arī Rust ir pieejams daudzās ARM arhitektūrās, netiek garantēts, ka Rust tiks oficiāli atbalstīts zemas klases aparatūras platformās.

Tas nozīmē, ka lielākajai daļai parasto, vispārpieņemto lietojumu, proti, 32 un 64 bitu Windows, Linux un MacOS, jābūt pieejamam atbalstītam Rust būvējumam.

Ja plānojat attīstīties operētājsistēmā Rust operētājsistēmā Windows, ņemiet vērā rīku ķēdes. Rust Windows atbalsta divas rīku ķēdes:

  • Dzimtā Microsoft Visual C (MSVC) ABI
  • Gnu ABI, ko izmanto GCC saistītājs.

Tā kā gandrīz visa C / C ++ programmatūra, kas iebūvēta sistēmā Windows, tik un tā izmanto MSVC, lielāko daļu laika vēlaties izmantot MSVC rīku ķēdi. Ja jums kādreiz būs nepieciešams GCC, visticamāk, tas būs paredzēts sadarbībai ar trešo pušu bibliotēkām, kas iebūvētas sistēmā Windows, ar GCC.

Labā ziņa ir tā, ka Rust rīku ķēdes pārvaldības sistēma ļauj saglabāt abas MSVC un Instalētas GCC rīku ķēdes, un tas ļauj pārslēgties starp tām pa projektiem atsevišķi.

Viens no Rust kompilācijas mērķiem ir WebAssembly, kas nozīmē, ka jūs varat rakstīt Rust un izvietot tīmekļa pārlūkprogrammā. Pats WebAssembly joprojām ir raupjš ap malām, tāpat kā Rusts tam atbalsta. Bet, ja esat ambiciozs un vēlaties savaldīt rokas, izlasiet Rust un WebAssembly izstrādātāju sastādīto grāmatu, kurā sīki aprakstīts WebAssemble sastādīšanas process Rust. Grāmatā ir vienkārša projekta apmācība, Conway's Game of Life ieviešana, kas rakstīta Rust un izvietota kā WebAssembly.

Sāciet savu Rust iestatīšanu ar sarūsējis

Rust nodrošina all-in-one uzstādītāju un rīku ķēdes uzturēšanas sistēmu, ko sauc sarūsējis. Lejupielādēt sarūsējis un palaidiet to; tas iegūs Rust rīku ķēdes jaunākās versijas un instalēs tās jums.

Vissvarīgākie rīki, ko uztur sarūsējis ir:

  • sarūsējis pati. Ikreiz, kad jaunās sarūsējis vai ir publicēti citi rīki, jūs varat vienkārši palaist rustup atjauninājums un viss tiek automātiski atjaunināts.
  • rustc, Rust kompilators.
  • Kravas, Rust's paketes un darbvietu pārvaldnieks.

Pēc noklusējuma, sarūsējis instalē Rust no stabilā kanāla. Ja vēlaties izmantot beta vai nakts versijas, jums jāinstalē šie kanāli (piemēram,rustup instalēt katru nakti), un iestatiet Rust tos izmantot pēc noklusējuma (rustup noklusējuma katru nakti). Varat arī manuāli norādīt, kurš kanāls jāizmanto, sastādot Rust lietojumprogrammu, tāpēc jums nav jāiestata un jāiestata noklusējums katru reizi, kad pārvietojaties starp projektiem.

Jūs varat arī izmantotsarūsējis instalēt un uzturēt pielāgotas rīku ķēdes. Tos parasti izmanto neoficiāli trešo pušu Rust veidojumi neatbalstītām platformām, jo ​​tām parasti ir nepieciešami savi saites vai citi platformai raksturīgi rīki.

Konfigurējiet IDE Rust

Neskatoties uz to, ka Rust ir salīdzinoši jauna valoda, tas jau ir izpelnījies lielu atbalstu no daudziem izplatītiem IDE. Izstrādātājs Manuels Hofmans uztur projektu šāda atbalsta stāvokļa izsekošanai vietnē areweideyet.com.

Liekot Rust labi darboties ar IDE, ir skaidri noteikts tās izstrādes komandas mērķis, izmantojot funkciju, ko sauc par Rust Language Server (RLS). RLS nodrošina tiešraides atsauksmes par attiecīgo kodu no paša Rust sastādītāja, nevis no trešās puses parsētāja.

Šeit ir IDE, kas atbalsta Rust:

  • Microsoft Visual Studio kodam ir Rust valodas atbalsta paplašinājums, ko izveidojusi pašas Rust izstrādātāju rīku komanda. Šis integrācijas līmenis padara to par vienu no vislabāk atbalstītajiem Rust IDE.
  • Eclipse lietotāji var lejupielādēt fasētu Eclipse for Rust izstrādes izdevumu vai izmantot Eclipse Photon atsevišķo korozijas spraudni. (Agrāka pakete RustDT vairs netiek uzturēta.)
  • Ja esat Emacs vai Vim ventilators, citi tādi izstrādātāji kā jūs abiem redaktoriem ir uzrakstījuši Rust specifiskus papildinājumus. Emacs ir Rust specifisks režīms, un Vim ir spraudnis, lai nodrošinātu sintakses izcelšanu un formatēšanu. RLS atbalsts ir pieejams gan Emacs, gan Vim, taču tas jāpievieno un jākonfigurē manuāli.
  • IntelliJ Idea un Atom lietotāji var pievienot spraudņus, lai noapaļotu Rust atbalstu.
  • Sublime Text rūtiņu sintakses atbalsts ir ārpus kastes, un spraudņi nodrošina dziļāku atbalstu citām funkcijām.
  • Kādu laiku tika izstrādāts vienkāršas IDE izveides projekts tieši Rust, SolidOak, taču kopš tā laika tas ir apstājies. Vislabāk ir iet kopā ar kādu no esošajiem IDE, kuriem jau ir atbalsts.

Izveidojiet savu pirmo Rust projektu

Rūsas projektiem ir domāta konsekventa direktoriju struktūra, tajos noteiktā veidā saglabājot kodu un projekta metadatus. Kods tiek saglabāts a src apakšdirektorijs, un informācija par projektu tiek saglabāta divos failos projekta saknes direktorijā,Cargo.toml (projekta pamatinformācija) un Kravas bloķēšana (automātiski izveidots atkarību saraksts). Jūs varat izveidot šo direktoriju struktūru un metadatus ar rokām, taču vienkāršāk ir izmantot tikai Rust rīkus, lai veiktu šo darbu.

Padoms:Tiešsaistes ceļvedis Rust By Example par Rust mācīšanos sniedz interaktīvus kodu paraugus, kurus var rediģēt un palaist tieši pārlūkprogrammā. Tas skar gandrīz katru galveno Rust jēdzienu, lai gan daži no galvenajiem jēdzieniem, piemēram, aizņēmumi un dzīves ilgums, tiek ieviesti salīdzinoši vēlu diskusijā.

Rust’s Cargo rīks pārvalda gan Rust projektus, gan bibliotēkas jeb “kastes”, kuras viņi izmanto. Lai izveidotu jaunu Rust projektu ar nosaukumu mans_projekts savā direktorijā ierakstiet kravas jauns my_project. (C # izstrādātājiem, kas strādā ar .Net Core, padomājiet par dotnet jauns komanda.) Jaunais projekts parādās apakšdirektorijā ar šo nosaukumu kopā ar pamata projekta manifestu - Cargo.toml fails - un projekta avota koda a src apakšdirektorijs.

Veidojot jaunu projektu, amain.rs fails tiek automātiski izveidots mapē src projekta direktoriju. Šis fails satur pamata lietotni “sveika pasaule”, tāpēc jūs varat tūlīt pārbaudīt savu Rust rīkķēdi, to apkopojot un palaižot.

Lietotnes “Sveika pasaule” avota kods:

fn main () {

println! (“Sveika pasaule!”);

}

Lai to izveidotu un palaistu, ievadiet projekta direktorija sakni un ierakstiet kravas palaist. Ņemiet vērā, ka pēc noklusējuma Cargo būvē projektus atkļūdošanas režīmā. Lai palaistu atbrīvošanas režīmā, izmantojiet kravas palaišana - izlaišana. Bināri ir uzbūvēti mērķis / atkļūdošana vai mērķis / atbrīvošana projekta apakšdirektoriju atkarībā no tā, kuru kompilācijas profilu izmantojat.

Darbs ar Rust redeļu kastēm

Iepakojuma pārvaldība ir jebkura mūsdienu programmēšanas vides galvenā sastāvdaļa. Šajā nolūkā Rust nodrošina “redeļu kastes”, kas ir trešo personu bibliotēkas, kas iepakotas izplatīšanai ar Rust rīkiem. Redeļu kastes varat atrast oficiālajā Rust pakešu reģistrā Crates.io.

Ja jūsu projekts ir atkarīgs no konkrētas kastes, jums tas jānorāda, rediģējot projektu Cargo.toml failu. Standarta veids, kā to izdarīt, ir manuāli, tas ir, vienkārši rediģējot Cargo.toml tieši ar teksta redaktoru. Nākamreiz, kad projekts tiks pārbūvēts, Rust automātiski iegūst visas nepieciešamās atkarības.

Padoms: Divi rīki, kravas rediģēšana un krava-rediģēt-lokāli, var atjaunināt atkarības no komandrindas, lai gan tie ir neoficiāli trešo pušu projekti.

Kad jūs veidojat Rust projektu, kas ir atkarīgs no ārējām redeļu kastēm, Cargo pēc noklusējuma meklē šīs kastes vietnē Crates.io; tie nav jāiegūst manuāli. Varat arī atsaukties uz kastēm projektā pēc URL, nevis pēc kastes nosaukuma, ja jums nepieciešama kaste, kas netiek mitināta reģistrā, piemēram, kaut kas no privāta repozitorija.

Ņemiet vērā, ka daži redeļu kastes būs tikai instalēt un veidot Rust nakts kanālu, jo tie izmanto eksperimentālās funkcijas, kas nav pieejamas citos kanālos. Ja atrodaties izlaišanas kanālā un mēģināt instalēt šādu redeļu kasti, jūs nesaņemsit brīdinājumu, kamēr pati kompilācija neizdosies. Kastes dokumentācijā parasti tiek minēts, vai tam ir nepieciešams nakts kanāls vai nē, tāpēc pirms iekļaušanas izlasiet to, nemaz nerunājot par kompilēšanu.

Redeļu kastes var būt komplektā ar binārām ierīcēm. Daži no tiem ir komandrindas rīki, kurus izmanto Rust izstrādē; citi ir vispārējas nozīmes rīki (piemēram,ripgrep). Lai instalētu vienu no šīm redeļu kastēm, vienkārši ierakstiet kravas uzstādīšana . Tas nav tikai veids, kā izplatīt ar Rust izveidotu bināru failu, taču tas ir ērts veids, kā Rust izstrādātājiem tos iegūt kā daļu no darbplūsmas, kurā tiek izmantoti Rust rīki.

Pārkompilēt Rust uz citu platformu

Tā kā Rust atbalsta vairākas rīku ķēdes, pat vienā un tajā pašā Rust instalācijā, jūs varat apkopot Rust lietojumprogrammas mērķa OS un vidē, kas atšķiras no tās, kurā kompilējat.

Šādai savstarpējai sastādīšanai platformā, kurā strādājat, nepieciešama rīku ķēde, kas atbilst mērķa platformai. Dažreiz, tāpat kā ar savstarpēju kompilēšanu uz Linux operētājsistēmā Windows vai otrādi, tas attiecas tikai uz GCC saites izmantošanu. Bet citreiz tas ir sarežģītāk. Piemēram, lai savstarpēji kompilētu ar MacOS, darba pabeigšanai nepieciešamas Xcode IDE bibliotēkas - cctools (Apple ekvivalents binutiliem) un MacOS SDK.

Trešo pušu rīki piedāvā dažus risinājumus šīm grūtībām:

  • Viens no šādiem rīkiem ir Trust, Travis CI un AppVeyor veidne, kas var automātiski publicēt Rust projekta bināros laidienus. To var izveidot Linux, Windows un MacOS, lai gan tam ir jāizmanto Travis CI un AppVeyor pakalpojumi, un tas prasa, lai jūsu projekts tiktu mitināts GitHub.
  • Cits projekts Cross darbojas tieši uz 64 bitu x86 Linux resursdatora, taču nodrošina tā radītāja raksturojumu kā “nulles iestatīšanas” savstarpēju apkopošanu dažādiem mērķiem, tostarp 64 bitu Windows un MIPS.
  • Crossbuild projekts nodrošina vairāku arhitektūru Docker attēlu, ko var izmantot, lai savstarpēji izveidotu visas trīs galvenās platformas.
$config[zx-auto] not found$config[zx-overlay] not found