Programavimas

Rūdžių pamoka: pradėkite naudoti „Rust“ kalbą

Per pastaruosius porą metų „Rust“ iš „Mozilla“ darbuotojo laboratorijoje užgimto smalsumo tapo stipriu pretendentu už naujos kartos vietinių programų ir „bare-metal“ sprendimų rašymą. Tačiau šie pasiekimai atsiranda dėl to, kad „Rust“ teikia savo įrankių grandinę ir komponentų valdymo sistemą kartu su savo ypatumais ir keistenybėmis.

Šiame straipsnyje apžvelgiami pagrindai, kaip nustatyti darbo aplinką „Rust“, konfigūruoti IDE ir kuo geriau išnaudoti įrankių rinkinį „Rust“ suteikia galimybę kurti programas.

Susijęs vaizdo įrašas: saugesnės programinės įrangos kūrimas naudojant „Rust“

Greitai paspartinkite naujoką „Rust“, skirtą sukurti greitą, sistemos lygio programinę įrangą. Šis dviejų minučių animacinis paaiškinimas parodo, kaip „Rust“ aplenkia nemalonius atminties ir valdymo programavimo klausimus.

Supraskite „Rust“ naktinius, beta ir stabilius leidimus

„Rust“ įrankių grandinę pirmiausia sudaro „Rust“ kompiliatorius, rustc, kartu su „Rust“ diegimo valdymo įrankiais. Kadangi „Rust“ yra nuolat kuriama, „Rust“ įrankių grandinė sukurta taip, kad ją būtų lengva nuolat atnaujinti.

Programinės įrangos projektai dažnai teikiami keliais kanalais, siekiant atskirti stabilias ir beta versijas. „Rust“ įrankių grandinė veikia taip pat ir siūlo tris įrankių grandinės kanalus:

  • Stabilus: Pagrindiniai išleidimai, kurie atsiranda maždaug kas šešias savaites.
  • Beta: Kandidatai į kitą svarbų išleidimą, kuris iškyla dažniau.
  • Naktinis: Greičiausias statinys su prieiga prie pažangiausių funkcijų, tačiau nėra garantijų dėl jų stabilumo.

Kaip pabrėžė kūrėjas Karolis Kuczmarskis, geriausia galvoti apie naktinį „Rust“ kanalą kaip savo kalbą. Kai kurios „Rust“ funkcijos, pvz., Kompiliavimas „WebAssembly“, yra prieinamos tik naktiniame kanale ir jas galima suaktyvinti tik specialiomis kompiliatorių direktyvomis. Kitaip tariant, jie net nekompiliuos beta ar stabiliuose kanaluose.

Tai yra dizainas, nes nėra jokios garantijos, kad naktinės funkcijos bus palaikomos niekur kitur. Tačiau daugelis šių funkcijų galiausiai pereina iš naktinio kanalo ir pereina į beta bei stabilius leidimus. (Pavyzdžiui, kompiliavimas „WebAssembly“ sistemoje veikia stabiliai nuo „Rust 1.30“.)

Trumpai:

  1. Naudokite stabilus faktiniam gamybos darbui.
  2. Naudokite beta versija išbandyti dabartinę programinę įrangą su būsimomis versijomis ir sužinoti, ar gali kas nors sugadinti atnaujinant.
  3. Tik naudoti kasnakt eksperimentams su smėlio dėže su naujausiomis Rust funkcijomis.

Pasirinkite OS, skirtą „Rust“ plėtrai

„Rust“ palaiko visas tris pagrindines platformas - „Windows“, „Linux“ ir „MacOS“ - tiek 32, tiek 64 bitų įsikūnijimais, kiekvienam iš jų yra oficialūs dvejetainiai failai. Nemažai kitų platformų taip pat turi oficialius dvejetainius failus, tačiau juose nėra to paties lygio automatinio testavimo aprėpties. Šios antros klasės platformos apima „ARMv6“ ir „ARMv7“, skirtas „iOS“, „Android“ ir „Linux“; „MIPS Linux“ ir „MIPS64 Linux“; X86 „iOS“, „Windows“ ir „Linux“ 32 bitų leidimai; ir „WebAssembly“. Kitos platformos, pvz., „Windows XP“ ar eksperimentinė „HaikuOS“, palaikomos neoficialiomis versijomis.

„Rust“ kūrėjų komanda pareiškė, kad tai nėra viena iš „Rust“ misijų, kad būtų kuo plačiau nešiojama. Pavyzdžiui, nors „Rust“ galima naudoti daugelyje ARM architektūrų, negarantuojama, kad „Rust“ bus oficialiai palaikomas žemos klasės aparatinės įrangos platformose.

Be to, daugumai įprastų, dažniausiai naudojamų atvejų, ty 32 ir 64 bitų „Windows“, „Linux“ ir „MacOS“, turėtų būti prieinama palaikoma „Rust“ versija.

Jei planuojate kurti „Rust“ sistemoje „Windows“, turėkite omenyje savo įrankių grandines. „Rust“ palaiko dvi „Windows“ įrankių grandines:

  • Gimtoji „Microsoft Visual C“ (MSVC) ABI
  • „Gnu ABI“, kurį naudoja GCC susiejėjas.

Kadangi beveik visoje „Windows“ įmontuotoje „C / C ++“ programinėje įrangoje vis tiek naudojama MSVC, didžiąją laiko dalį norėsite naudoti „MSVC“ įrankių grandinę. Jei jums kada nors prireiks GCC, greičiausiai tai bus skirta sąveikai su trečiųjų šalių bibliotekomis, įmontuotomis sistemoje „Windows“ su GCC.

Geros naujienos yra tai, kad „Rust“ įrankių grandinės valdymo sistema leidžia išlaikyti abu MSVC ir Įrengtos GCC įrankių grandinės, leidžiančios persijungti tarp jų kiekvienam projektui atskirai.

Vienas iš „Rust“ kompiliavimo tikslų yra „WebAssembly“, tai reiškia, kad galite rašyti „Rust“ ir diegti žiniatinklio naršyklėje. Pats „WebAssembly“ vis dar yra šiurkštus aplink kraštus, taip pat yra ir „Rust“ palaikymas. Bet jei esate ambicingas ir norite, kad jūsų rankos būtų netvarkingos, perskaitykite „Rust“ ir „WebAssembly“ kūrėjų sudarytą knygą, kurioje išsamiai aprašomas „WebAss Assembly“ surūdijimo procesas. Knygoje yra paprasto projekto pamoka, „Conway“ gyvenimo žaidimo įgyvendinimas, parašytas „Rust“ ir įdiegtas kaip „WebAssembly“.

Pradėkite „Rust“ sąranką naudodami surūdijimas

„Rust“ teikia „viskas viename“ montuotoją ir įrankių grandinės priežiūros sistemą, vadinamą surūdijimas. parsisiųsti surūdijimas ir paleiskite jį; ji gaus naujausias įrankių grandinės „Rust“ versijas ir jas įdiegs jums.

Kritiškiausios priemonės, kurias prižiūri surūdijimas yra:

  • surūdijimas pats. Kai tik naujos versijos surūdijimas ar kiti įrankiai yra paskelbti, galite tiesiog paleisti rustup atnaujinimas ir viskas bus atnaujinta automatiškai.
  • rustc, „Rust“ kompiliatorius.
  • Krovinys, „Rust“ paketo ir darbo vietos valdytojas.

Pagal numatytuosius nustatymus surūdijimas įdiegia „Rust“ iš stabilaus kanalo. Jei norite naudoti beta arba naktines versijas, turite įdiegti tuos kanalus (pvz.,rustup įdiegti kas vakarą), ir nustatyti Rust naudoti juos pagal numatytuosius nustatymus (rustup numatytasis naktinis). Taip pat galite rankiniu būdu nurodyti, kurį kanalą naudoti kuriant „Rust“ programą, kad nereikėtų nustatyti ir iš naujo nustatyti numatytojo nustatymo kiekvieną kartą, kai keliaujate iš vieno projekto į kitą.

Taip pat galite naudotisurūdijimas įdiegti ir prižiūrėti pasirinktines įrankių grandines. Paprastai juos naudoja neoficialūs trečiųjų šalių „Rust“ kūriniai nepalaikomoms platformoms, nes paprastai tam reikia savo susiejimo ar kitų konkrečiai platformai skirtų įrankių.

Konfigūruokite savo IDE, kad jis būtų rūdžių

Nepaisant to, kad „Rust“ yra gana nauja kalba, ji jau sulaukė stipraus daugelio įprastų IDE palaikymo. Kūrėjas Manuelis Hoffmanas palaiko tokios paramos būklės stebėjimo projektą svetainėje areweideyet.com.

Kad „Rust“ gerai veiktų su IDE, yra aiškus jos kūrėjų komandos tikslas per funkciją, vadinamą „Rust Language Server“ (RLS). RLS teikia tiesioginį atsiliepimą apie aptariamą kodą iš paties „Rust“ kompiliatoriaus, o ne iš trečiosios šalies analizatoriaus.

Čia yra IDE, palaikantys „Rust“:

  • „Microsoft Visual Studio Code“ turi „Rust“ kalbos palaikymo plėtinį, kurį sukūrė pačios „Rust“ kūrėjų įrankių komanda. Dėl tokio lygio integracijos jis yra vienas iš geriausiai palaikomų „Rust“ IDE.
  • „Eclipse“ vartotojai gali atsisiųsti iš anksto supakuotą „Eclipse“ versiją, skirtą „Rust“, arba naudoti atskirą korozijos įskiepį, skirtą „Eclipse Photon“. (Ankstesnis paketas „RustDT“ nebeprižiūrimas.)
  • Jei esate „Emacs“ ar „Vim“ gerbėjas, kiti panašūs į jus kūrėjai parašė „Rust“ specifinius priedus abiem redaktoriams. „Emacs“ veikia „Rust“ specifinis režimas, o „Vim“ turi papildinį sintaksės paryškinimui ir formatavimui. RLS palaikymas galimas tiek „Emacs“, tiek „Vim“, tačiau jį reikia pridėti ir sukonfigūruoti rankiniu būdu.
  • „IntelliJ Idea“ ir „Atom“ vartotojai gali pridėti papildinių, kad užbaigtų „Rust“ palaikymą.
  • „Sublime Text“ yra „Rust“ sintaksės palaikymas iš dėžutės, o papildiniai teikia gilesnę paramą kitoms funkcijoms.
  • Kurį laiką buvo kuriamas paprasto IDE sukūrimo specialiai „Rust“ skirtas „SolidOak“ projektas, kuris nuo to laiko stringa. Geriausia yra pasirinkti vieną iš esamų IDE, kurie jau turi palaikymą.

Sukurkite savo pirmąjį „Rust“ projektą

Rūdžių projektai turi turėti nuoseklią katalogų struktūrą, juose tam tikrais būdais saugant kodą ir projekto metaduomenis. Kodas saugomas a src pakatalogis ir išsami informacija apie projektą saugoma dviejuose failuose, esančiuose projekto šakniniame kataloge,Cargo.toml (pagrindinė projekto informacija) ir Krovinys.raktas (automatiškai sukurtas priklausomybių sąrašas). Jūs galite sukurti tą katalogo struktūrą ir metaduomenis rankiniu būdu, tačiau atlikti darbą lengviau paprasčiau naudoti pačius „Rust“ įrankius.

Patarimas:„Rust By Example“ internetiniame „Rust“ mokymosi vadove pateikiami interaktyvūs kodų pavyzdžiai, kuriuos galima redaguoti ir paleisti tiesiai naršyklėje. Tai liečia beveik visas pagrindines „Rust“ sąvokas, nors kai kurios svarbesnės sąvokos, pvz., Skolinimasis ir gyvenimo trukmė, pristatomos palyginti vėlai diskusijoje.

„Rust’s Cargo“ įrankis valdo tiek „Rust“ projektus, tiek jų naudojamas bibliotekas arba „dėžes“. Norėdami sukurti naują „Rust“ projektą, pavadintą Mano projektas savo kataloge įveskite krovinys naujas my_project. (C # kūrėjams, dirbantiems su .Net Core, pagalvokite apie dotnet naujas komanda.) Naujas projektas rodomas pakatalogyje su tokiu pavadinimu kartu su pagrindiniu projekto manifestu - Cargo.toml failas - ir projekto šaltinio kodo dalis, t src pakatalogis.

Kai kuriate naują projektą, apagrindinis.rs failas automatiškai sukuriamas src projekto katalogas. Šiame faile yra pagrindinė programa „labas pasaulis“, todėl galite iškart išbandyti „Rust“ įrankių grandinę ją sukompiliavę ir paleisdami.

„Hello world“ programos šaltinio kodas:

fn main () {

println! („Labas pasaulis!“);

}

Norėdami jį sukurti ir paleisti, įveskite projekto katalogo šaknį ir įveskite krovinių važiavimas. Atminkite, kad pagal numatytuosius nustatymus „Cargo“ kuria projektus derinimo režimu. Norėdami paleisti išleidimo režimu, naudokite krovinio važiavimas - išleisti. Dvejetainiai pastatyti taikinys / derinimas arba taikinys / paleidimas projekto katalogą, atsižvelgiant į tai, kurį rinkimo profilį naudojate.

Darbas su rūdžių dėžėmis

Paketų valdymas yra pagrindinė bet kurios šiuolaikinės programavimo aplinkos dalis. Tuo tikslu „Rust“ pateikia „dėžes“, kurios yra trečiųjų šalių bibliotekos, supakuotos platinti naudojant „Rust“ įrankius. Dėžes galite rasti oficialiame „Rust“ paketų registre, „Crates.io“.

Jei jūsų projektas priklauso nuo konkretaus dėklo, turite nurodyti tą dėžę redaguodami projektą Cargo.toml failą. Standartinis būdas tai padaryti yra rankiniu būdu, ty paprasčiausiai redaguojant Cargo.toml tiesiogiai su teksto redaktoriumi. Kitą kartą, kai projektas bus atstatytas, „Rust“ automatiškai gauna reikalingas priklausomybes.

Patarimas: Du įrankiai, krovinys-redaguoti ir krovinys-redagavimas-lokaliai, gali atnaujinti priklausomybes iš komandinės eilutės, nors tai yra neoficialūs trečiųjų šalių projektai.

Kai kuriate „Rust“ projektą, kuris priklauso nuo išorinių dėžučių, „Cargo“ pagal numatytuosius nustatymus tų dėžučių ieško „Crates.io“; jums nereikia jų gauti rankiniu būdu. Projekte esančias dėžes taip pat galite nurodyti pagal URL, o ne pagal dėžutės pavadinimą, jei jums reikia dėžutės, kuri nėra priglobta registre, pvz., Kažko iš privačios saugyklos.

Atkreipkite dėmesį, kad kai kurios dėžutės bus tik įdiegti ir kurti naktinį „Rust“ kanalą, nes jie naudoja eksperimentines funkcijas, kurių nėra kituose kanaluose. Jei esate leidimo kanale ir bandote įdiegti tokią dėžę, negausite jokio įspėjimo, kol pats kompiliavimas nepavyks. „Crate“ dokumentuose paprastai minima, ar tam reikalingas naktinis kanalas, ar ne, todėl perskaitykite prieš įtraukdami, jau nekalbant apie kompiliavimą.

Dėžėse gali būti dvejetainiai failai. Kai kurie yra komandinės eilutės įrankiai, naudojami kuriant „Rust“; kiti yra bendros paskirties įrankiai (pvz.,ripgrep). Norėdami įdiegti vieną iš šių dėžių, tiesiog įveskite krovinių montavimas . Tai nėra tik būdas platinti dvejetainį failą, sukurtą naudojant „Rust“, tačiau „Rust“ kūrėjams tai yra patogus būdas juos gauti kaip „Rust“ įrankių darbo eigos dalį.

Sukompiliuoti „Rust“ į kitą platformą

Kadangi „Rust“ palaiko kelias įrankių grandines, net ir tuo pačiu diegiant „Rust“, galite sukompiliuoti „Rust“ programas tikslinei OS ir aplinkai, kuri skiriasi nuo tos, kurioje esate.

Tokiam kryžminiam kompiliavimui reikalinga įrankių grandinė platformoje, kurioje dirbate, kuri atitinka tikslinę platformą. Kartais, kaip ir kryžminio kompiliavimo su „Linux“ sistemoje sistemoje „Windows“ ar atvirkščiai, tai susiję ne tik su GCC susiejimo turėjimu. Bet kitais atvejais tai yra sudėtingiau. Pavyzdžiui, norint atlikti kryžminį kompiliavimą su „MacOS“, jums reikia „Xcode IDE“ bibliotekų, kad užbaigtumėte darbą - „cctools“ („Apple“ atitikmuo „binutils“) ir „MacOS SDK“.

Trečiųjų šalių įrankiai siūlo keletą būdų, kaip išvengti šių sunkumų:

  • Vienas iš tokių įrankių yra „Trust“, „Travis CI“ ir „AppVeyor“ šablonas, kuris gali automatiškai paskelbti dvejetainius „Rust“ projekto leidimus. Tai gali būti sukurta „Linux“, „Windows“ ir „MacOS“, nors tam reikia naudoti „Travis CI“ ir „AppVeyor“ paslaugas, o jūsų projektą reikia laikyti „GitHub“.
  • Kitas projektas „Cross“ vykdomas tiesiogiai 64 bitų „x86 Linux“ pagrindiniame kompiuteryje, tačiau jo kūrėjas apibūdina „nulio nustatymo“ kryžminį kompiliavimą įvairiausiems tikslams, įskaitant 64 bitų „Windows“ ir MIPS.
  • „Crossbuild“ projektas pateikia daugialypės architektūros „Docker“ vaizdą, kurį galima naudoti kryžminiam visų trijų platformų kūrimui.