Programiranje

Vadnica za rje: Začnite z jezikom Rust

V zadnjih nekaj letih je Rust od radovednosti, ki je nastala v laboratoriju zaposlenega v Mozilli, prešel v močnega kandidata za pisanje naslednje generacije domačih aplikacij in golih kovin. Toda ta napredek prihaja iz Rusta, ki ponuja lasten sistem upravljanja orodij in komponent - skupaj s svojimi lastnostmi in posebnostmi.

V tem članku so predstavljene osnove nastavitve delovnega okolja v Rustu, konfiguriranja IDE-ja in največjega izkoristka nabora orodij, ki jih Rust ponuja za razvoj aplikacij.

Sorodni video: Razvijanje varnejše programske opreme z Rustom

Hitro pospešite novost Rust, zasnovano za ustvarjanje hitre programske opreme na sistemski ravni. Ta dvominutni animirani razlagalnik prikazuje, kako Rust obide moteča programska vprašanja glede pomnilnika in upravljanja.

Razumevanje nočnih, beta in stabilnih različic Rust

Verigo orodij Rust je sestavljen predvsem iz prevajalnika Rust, rustc, skupaj z orodji za upravljanje namestitve Rust. Ker je Rust v nenehnem razvoju, je orodja Rust zasnovana tako, da jih je enostavno posodabljati.

Programi programske opreme se pogosto ponujajo po več kanalih, da se ločijo stabilna in beta različica kode. Veriga orodij Rust deluje na enak način in ponuja tri kanale za svojo verigo orodij:

  • Hlev: Glavne točke, ki se pojavijo vsakih šest tednov.
  • Beta: Kandidati za naslednjo večjo točko, ki se pojavlja pogosteje.
  • Ponoči: Najbolj neposredna gradnja z dostopom do vrhunskih funkcij, vendar brez zagotovil glede njihove stabilnosti.

Kot je poudaril razvijalec Karol Kuczmarski, je najbolje, da si nočni kanal Rust predstavljamo kot svoj jezik. Nekatere funkcije Rust, na primer prevajanje v WebAssembly, so na voljo samo v nočnem kanalu in jih je mogoče aktivirati le s posebnimi navodili prevajalnika. Z drugimi besedami, niti v beta ali stabilnih kanalih ne bodo prevajali.

To je po zasnovi, saj ni nobenega zagotovila, da bodo nočne funkcije podprte kje drugje. Vendar pa številne od teh funkcij sčasoma izstopijo iz nočnega kanala in v beta in stabilne izdaje. (Na primer, prevajanje v WebAssembly deluje stabilno od Rust 1.30.)

V kratkem:

  1. Uporaba stabilno za dejansko proizvodno delo.
  2. Uporaba beta da preizkusite trenutno programsko opremo glede na prihajajoče različice, da ugotovite, ali se pri nadgradnji lahko kaj pokvari.
  3. Uporabljajte samo nočno za preizkuse v peskovniku z najnovejšimi lastnostmi Rusta.

Izberite OS za razvoj Rusta

Rust podpira vse tri glavne platforme - Windows, Linux in MacOS - v 32- in 64-bitnih inkarnacijah, z uradnimi binarnimi datotekami za vsako. Množica drugih platform ima tudi uradne binarne datoteke, vendar nimajo enake ravni avtomatiziranega testiranja. Te drugorazredne platforme vključujejo ARMv6 in ARMv7 za iOS, Android in Linux; MIPS Linux in MIPS64 Linux; 32-bitne izdaje x86 iOS, Windows in Linux; in WebAssembly. Druge platforme, kot sta Windows XP ali poskusni HaikuOS, podpirajo neuradne gradnje.

Rustova razvojna ekipa je izjavila, da Rustova misija ni ena od čim bolj prenosljivih. Na primer, čeprav je Rust na voljo v številnih arhitekturah ARM, ni zagotovljeno, da bo Rust uradno podprt na strojnih platformah nižjega cenovnega razreda.

Kljub temu bi morala biti na voljo podprta zgradba Rust za veliko večino običajnih, običajnih primerov uporabe - in sicer 32- in 64-bitni Windows, Linux in MacOS.

Če nameravate razvijati Rust v sistemu Windows, ne pozabite na svoje verige orodij. Rust podpira dve verigi orodij v sistemu Windows:

  • Izvorni Microsoft Visual C (MSVC) ABI
  • Gnu ABI, ki ga uporablja povezovalnik GCC.

Ker skoraj vsa programska oprema C / C ++, zgrajena v sistemu Windows, vseeno uporablja MSVC, boste v večini primerov želeli uporabljati verigo orodij MSVC. Če kdaj potrebujete GCC, bo najverjetneje namenjen sodelovanju s knjižnicami drugih proizvajalcev, vgrajenimi v sistemu Windows, z GCC.

Dobra novica je, da vam Rustov sistem upravljanja verige orodij omogoča, da obdržite oba MSVC in Nameščene verige orodij GCC in vam omogoča preklapljanje med njimi za vsak projekt posebej.

Eden od ciljev Rustovega zbiranja je WebAssembly, kar pomeni, da lahko pišete v Rustu in ga namestite v spletni brskalnik. Sama spletna montaža je po robovih še vedno groba, prav tako tudi Rustova podpora zanjo. Če pa ste ambiciozni in želite svoje roke zmešati, preberite knjigo, ki so jo sestavili razvijalci Rust in WebAssembly, v kateri je podrobno opisan postopek za sestavljanje WebAssembly v Rust. Knjiga vključuje vadnico za preprost projekt, izvedbo Conwayjeve igre življenja, napisano v Rustu in uvedeno kot WebAssembly.

Začnite nastavitev Rust z rustup

Rust ponuja vsestranski monter in sistem vzdrževanja verige orodij, imenovan rustup. Prenesi rustup in ga zaženite; pridobil bo najnovejše različice verige orodij Rust in jih namestil namesto vas.

Najbolj kritična orodja, ki jih vzdržuje rustup so:

  • rustup sama. Kadar koli nove različice rustup ali so objavljena druga orodja, lahko preprosto zaženete posodobitev rustup in naj se vse samodejno posodablja.
  • rustc, prevajalnik Rust.
  • Cargo, Rustov upravitelj paketov in delovnega prostora.

Privzeto, rustup namesti Rust iz stabilnega kanala. Če želite uporabljati beta ali nočne različice, morate te kanale namestiti (na primernamestite nočno), in nastavite Rust, da jih privzeto uporablja (privzeto ponoči). Lahko tudi ročno določite, kateri kanal želite uporabiti pri sestavljanju aplikacije Rust, tako da vam ni treba nastaviti in ponastaviti privzete vrednosti vsakič, ko se premikate med projekti.

Lahko tudi uporabiterustup za namestitev in vzdrževanje verig orodij po meri. Te običajno uporabljajo neuradne, neodvisne gradnje Rusta za nepodprte platforme, ker običajno zahtevajo lastne povezovalnike ali druga orodja, specifična za platformo.

Konfigurirajte svoj IDE za Rust

Kljub temu, da je Rust relativno nov jezik, je že dobil močno podporo številnih običajnih IDE-jev. Razvijalec Manuel Hoffman vzdržuje projekt za spremljanje stanja takšne podpore na spletnem mestu areweideyet.com.

Zagotavljanje dobrega delovanja Rusta z IDE je izrecni cilj njegove razvojne skupine prek funkcije, imenovane Rust Language Server (RLS). RLS zagotavlja povratne informacije o zadevni kodi v živo s strani Rustovega lastnega prevajalnika in ne s strani drugega razčlenjevalnika.

Tu so IDE-ji, ki podpirajo Rust:

  • Microsoftova koda Visual Studio ima razširitev podpore za jezik Rust, ki jo je ustvarila Rustova lastna skupina za orodja za razvijalce. Zaradi te stopnje integracije je eden izmed najbolj podprtih IDE-jev za Rust.
  • Uporabniki Eclipse lahko prenesejo predpakirano izdajo Eclipse za razvoj rje, ali pa uporabijo samostojni vtičnik za korozijo za Eclipse Photon. (Prejšnji paket RustDT se ne vzdržuje več.)
  • Če ste ljubitelj Emacsa ali Vima, so drugi razvijalci, kot ste vi, napisali dodatke, specifične za Rust, za oba urednika. Emacs ima način, specifičen za Rust, Vim pa vtičnik za poudarjanje in oblikovanje sintakse. Podpora za RLS je na voljo tako za Emacs kot za Vim, vendar jo je treba dodati in konfigurirati ročno.
  • Uporabniki IntelliJ Idea in Atom lahko dodajo vtičnike, da zaokrožijo podporo Rustu.
  • V sublimnem besedilu je sintaksa Rust že takoj na voljo, vtičniki pa nudijo globljo podporo za druge funkcije.
  • Projekt za ustvarjanje preprostega IDE, posebej za Rust, SolidOak, je bil nekaj časa v fazi razvoja, vendar je od takrat ustavil. Najbolje je, da se odločite za enega od obstoječih IDE-jev, ki že podpira.

Ustvari svoj prvi projekt Rust

Projekti Rust naj bi imeli dosledno strukturo imenikov, v njih pa so na določene načine shranjeni koda in metapodatki projekta. Koda je shranjena v src podimenik, podrobnosti o projektu pa so shranjene v dveh datotekah v korenskem imeniku projekta,Cargo.toml (osnovne informacije o projektu) in Cargo.lock (samodejno ustvarjen seznam odvisnosti). To strukturo imenikov in metapodatke lahko ustvarite ročno, vendar je za to lažje uporabljati Rustova lastna orodja.

Namig:Spletni vodnik Rust By Example za učenje Rust ponuja interaktivne vzorce kode, ki jih je mogoče urejati in izvajati neposredno v brskalniku. Dotakne se skoraj vseh pomembnejših konceptov Rusta, čeprav so nekateri ključni koncepti, kot so izposoja in življenjska doba, v razpravi predstavljeni razmeroma pozno.

Orodje Rust's Cargo upravlja tako projekte Rust kot knjižnice ali "zaboje", ki jih uporabljajo. Za zagon novega projekta Rust z imenom moj_projekt v svoj imenik vnesite tovor nov moj_projekt. (Za razvijalce C #, ki delajo z .Net Core, si omislite dotnet novo ukaz.) Nov projekt se pojavi v podimeniku s tem imenom, skupaj z osnovnim manifestom projekta - Cargo.toml datoteka - in vtičnica za izvorno kodo projekta v src podimenik.

Ko ustvarite nov projekt, amain.rs datoteka se samodejno ustvari v src imenik projekta. Ta datoteka vsebuje osnovno aplikacijo "hello world", zato lahko svojo verigo orodij Rust takoj preizkusite tako, da jo sestavite in zaženete.

Izvorna koda za aplikacijo "hello world":

fn main () {

println! (“Pozdravljeni, svet!”);

}

Če ga želite zgraditi in zagnati, vnesite koren imenika projekta in vnesite tovorni tek. Upoštevajte, da Cargo privzeto gradi projekte v načinu za odpravljanje napak. Za zagon v načinu sprostitve uporabite tovor - sprostitev. Dvojne datoteke so zgrajene v cilj / odpravljanje napak ali cilj / sprostitev podimenik projekta, odvisno od tega, kateri profil prevajanja uporabljate.

Delo z zaboji Rust

Upravljanje paketov je ključni del vsakega sodobnega programskega okolja. V ta namen Rust ponuja "zaboje", ki so neodvisne knjižnice, pakirane za distribucijo z Rustovimi orodji. Zaboje najdete v uradnem registru paketov Rust, Crates.io.

Če je vaš projekt odvisen od določenega zaboja, ga morate določiti z urejanjem projekta Cargo.toml mapa. Običajni način za to je ročno - torej preprosto urejanje Cargo.toml neposredno z urejevalnikom besedil. Ko bo projekt naslednjič obnovljen, bo Rust samodejno pridobil vse potrebne odvisnosti.

Namig: Dve orodji, tovor-uredi in tovor-urejanje-lokalno, lahko posodobi odvisnosti iz ukazne vrstice, čeprav gre za neuradne tuje projekte.

Ko ustvarite projekt Rust, ki je odvisen od zunanjih zabojev, Cargo privzeto poišče te zaboje na Crates.io; vam jih ni treba ročno pridobiti. Na zaboje v projektu se lahko sklicujete tudi po URL-ju in ne po imenu zaboja, če potrebujete zaboj, ki ne gostuje v registru, na primer nekaj iz zasebnega skladišča.

Upoštevajte, da bodo nekateri zaboji samo namestite in nadgradite Rustov nočni kanal, ker uporabljajo eksperimentalne funkcije, ki niso na voljo v drugih kanalih. Če ste na kanalu za izdajo in poskušate namestiti tak zaboj, ne boste dobili nobenega opozorila, dokler sama sestava ne bo uspela. Dokumentacija v zabojih običajno omenja, ali zahteva nočni kanal ali ne, zato preberite, preden ga vključite, kaj šele, da bi ga prevedli.

Zaboji so lahko priloženi z binarnimi datotekami. Nekatera so orodja ukazne vrstice, ki se uporabljajo pri razvoju Rusta; druga so splošna orodja (kot nprripgrep). Če želite namestiti enega od teh zabojev, samo vnesite namestitev tovora . To ni samo način distribucije binarnih datotek, ustvarjenih z Rustom, vendar je razvijalcem Rust primeren način, da jih pridobijo kot del poteka dela, ki vključuje orodja Rust.

Navzkrižno prevedite Rust na drugo platformo

Ker Rust podpira več verig orodij, lahko celo pri isti namestitvi Rusta aplikacije Rust prevedete v ciljni OS in okolje, ki se razlikuje od tistega, v katerem sestavljate.

Za takšno navzkrižno prevajanje je potrebna veriga orodij na platformi, na kateri delate, ki se ujema s ciljno platformo. Včasih, tako kot pri navzkrižnem prevajanju v Linux v sistemu Windows ali obratno, to vključuje le nekaj več kot le povezovanje GCC. Toda včasih je bolj zapleteno. Na primer za navzkrižno prevajanje v MacOS potrebujete knjižnice Xcode IDE, da dokončate opravilo - cctools (Appleov ekvivalent binutilov) in MacOS SDK.

Orodja drugih proizvajalcev ponujajo nekaj načinov za odpravljanje teh težav:

  • Eno takšnih orodij je Trust, predloga Travis CI in AppVeyor, ki lahko samodejno objavi binarne izdaje projekta Rust. Lahko je zgrajen za Linux, Windows in MacOS, čeprav zahteva uporabo storitev Travis CI in AppVeyor, in zahteva, da vaš projekt gostuje na GitHubu.
  • Drug projekt, Cross, deluje neposredno na 64-bitnem x86 Linux gostitelju, vendar ponuja, kar njegov ustvarjalec opisuje kot "brez nastavitve" navzkrižno prevajanje na najrazličnejše cilje, vključno s 64-bitnim sistemom Windows in MIPS.
  • Projekt crossbuild ponuja večarhitekturno sliko Docker, ki jo lahko uporabimo za navzkrižno gradnjo med vsemi tremi glavnimi platformami.
$config[zx-auto] not found$config[zx-overlay] not found