Programování

Výukový program Rust: Začínáme s jazykem Rust

Za posledních pár let se Rust změnil ze zvědavosti připravené v laboratoři zaměstnance Mozilly na silného uchazeče o psaní nové generace nativních aplikací a holých kovů. Ale tyto pokroky pocházejí od společnosti Rust, která poskytuje svůj vlastní řetězec nástrojů a systém správy komponent - spolu s vlastními funkcemi a zvláštnostmi.

Tento článek prochází základy nastavení pracovního prostředí v Rustu, konfigurace IDE a maximálního využití sady nástrojů, které Rust poskytuje pro vývoj aplikací.

Související video: Vývoj bezpečnějšího softwaru s Rustem

Rychle se rozjeďte s nováčkem Rustem, který je určen k vytváření rychlého softwaru na úrovni systému. Tento dvouminutový animovaný vysvětlovač ukazuje, jak Rust obchází otravné programovací problémy paměti a správy.

Pochopte Rust v nočních, beta a stabilních verzích

Řetěz nástrojů Rust se skládá převážně z kompilátoru Rust, rustc, spolu s nástroji pro správu instalace Rust. Vzhledem k tomu, že Rust je neustále vyvíjen, je řetěz nástrojů Rust navržen tak, aby bylo snadné ho udržovat v aktuálním stavu.

Softwarové projekty jsou často poskytovány prostřednictvím více kanálů, které oddělují stabilní a beta verzi kódu. Řetězec nástrojů Rust funguje stejným způsobem a pro svůj řetěz nástrojů nabízí tři kanály:

  • Stabilní: Hlavní bodové zprávy, které se objevují každých šest týdnů.
  • Beta: Kandidáti na další hlavní bodové vydání, které se objevují častěji.
  • Noční: Nejbezprostřednější konstrukce s přístupem k nejmodernějším funkcím, ale bez záruk jejich stability.

Jak zdůraznil vývojář Karol Kuczmarski, je nejlepší si noční kanál Rust představit jako svůj vlastní jazyk. Některé funkce Rust, jako je kompilace do WebAssembly, jsou k dispozici pouze v nočním kanálu a lze je aktivovat pouze speciálními direktivami kompilátoru. Jinými slovy, nebudou se kompilovat ani v beta verzi nebo ve stabilních kanálech.

Je to záměrné, protože neexistuje žádná záruka, že noční funkce budou podporovány kdekoli jinde. Mnoho z těchto funkcí však nakonec přechází z nočního kanálu do beta a stabilních verzí. (Například kompilace do WebAssembly funguje od verze Rust 1.30 ve stabilní verzi.)

Ve zkratce:

  1. Použití stabilní pro skutečnou produkční práci.
  2. Použití beta otestovat aktuální software proti nadcházejícím verzím a zjistit, zda se při upgradu může něco zlomit.
  3. Používejte pouze noční pro experimenty v karanténě s nejnovějšími funkcemi Rust.

Vyberte operační systém pro vývoj Rust

Rust podporuje všechny tři hlavní platformy - Windows, Linux a MacOS - v 32bitové i 64bitové inkarnaci, s oficiálními binárními soubory pro každou z nich. Mnoho dalších platforem má také oficiální binární soubory, ale nemají stejnou úroveň pokrytí automatickým testováním. Tyto platformy druhé třídy zahrnují ARMv6 a ARMv7 pro iOS, Android a Linux; MIPS Linux a MIPS64 Linux; 32bitové edice x86 pro iOS, Windows a Linux; a WebAssembly. Jiné platformy, jako Windows XP nebo experimentální HaikuOS, jsou podporovány prostřednictvím neoficiálních sestavení.

Rustův vývojový tým uvedl, že není jednou z Rustových misí být co nejširší přenositelností. Například i když je Rust k dispozici na mnoha ARM architekturách, není zaručeno, že bude Rust oficiálně podporován na hardwarových platformách nižší třídy.

To znamená, že by měla existovat podporovaná sestava Rust pro drtivou většinu běžných běžných případů použití - jmenovitě pro 32bitové a 64bitové systémy Windows, Linux a MacOS.

Pokud plánujete vývoj v systému Rust ve Windows, nezapomeňte na řetězy nástrojů. Rust podporuje dva řetězce nástrojů ve Windows:

  • Nativní Microsoft Visual C (MSVC) ABI
  • Gnu ABI používaný linkerem GCC.

Protože téměř veškerý software C / C ++ zabudovaný v systému Windows i tak používá MSVC, budete většinu času chtít používat řetězec nástrojů MSVC. Pokud někdy potřebujete GCC, bude to s největší pravděpodobností spolupráce s knihovnami třetích stran vytvořenými ve Windows s GCC.

Dobrou zprávou je, že systém správy řetězů nástrojů Rust vám umožňuje zachovat obě MSVC a Nainstalovány řetězy nástrojů GCC a umožňuje vám mezi nimi přepínat na základě jednotlivých projektů.

Jedním z Rustových cílů kompilace je WebAssembly, což znamená, že můžete psát do Rustu a nasadit jej do webového prohlížeče. Samotné WebAssembly je stále drsné, stejně jako Rustova podpora. Ale pokud jste ambiciózní a chcete, aby vám ruce byly špinavé, přečtěte si knihu sestavenou vývojáři Rust a WebAssembly, která podrobně popisuje proces kompilace WebAssembly do Rustu. Kniha obsahuje výukový program pro jednoduchý projekt, implementaci hry Conway’s Game of Life, napsanou v Rustu a nasazenou jako WebAssembly.

Spusťte nastavení Rust pomocí rezavění

Rust poskytuje all-in-one instalační program a systém údržby řetězců nástrojů s názvem rezavění. Stažení rezavění a spustit to; získá nejnovější verze řetězu nástrojů Rust a nainstaluje je za vás.

Nejkritičtější nástroje udržované rezavění jsou:

  • rezavění sám. Kdykoli nové verze rezavění nebo jsou publikovány jiné nástroje, stačí spustit nerezová aktualizace a nechte vše automaticky aktualizovat.
  • rustc, kompilátor Rust.
  • Náklad, Rustův balíček a manažer pracovního prostoru.

Ve výchozím stavu, rezavění nainstaluje Rust ze stabilního kanálu. Pokud chcete používat beta nebo noční verzi, musíte si tyto kanály nainstalovat (napříkladrustup nainstalovat každou noc), a ve výchozím nastavení je používat Rust (rustup výchozí každou noc). Můžete také ručně určit, který kanál se má použít při kompilaci aplikace Rust, takže nemusíte nastavovat a resetovat výchozí hodnoty při každém přesunu mezi projekty.

Můžete také použítrezavění instalovat a udržovat vlastní řetězy nástrojů. Ty jsou obvykle používány neoficiálními sestavami Rust třetích stran pro nepodporované platformy, protože ty obvykle vyžadují jejich vlastní linkery nebo jiné nástroje specifické pro platformu.

Nakonfigurujte své IDE pro Rust

Přestože je Rust relativně novým jazykem, již získal silnou podporu mnoha běžných IDE. Vývojář Manuel Hoffman udržuje projekt ke sledování stavu takové podpory na webových stránkách areweideyet.com.

Aby Rust dobře fungoval s IDE, je výslovným cílem jeho vývojového týmu prostřednictvím funkce zvané Rust Language Server (RLS). RLS poskytuje živou zpětnou vazbu o daném kódu od Rustova vlastního kompilátoru, nikoli od analyzátoru třetí strany.

Zde jsou IDE podporující Rust:

  • Microsoft Visual Studio Code má rozšíření podpory jazyka Rust vytvořené vlastním týmem vývojových nástrojů společnosti Rust. Tato úroveň integrace z něj činí jeden z nejlépe podporovaných IDE pro Rust.
  • Uživatelé Eclipse si mohou stáhnout připravenou edici Eclipse pro vývoj Rust, nebo použít samostatný Corrosion plugin pro Eclipse Photon. (Starší balíček, RustDT, již není udržován.)
  • Pokud jste fanouškem Emacsu nebo Vimu, další vývojáři jako vy napsali doplňky specifické pro Rust pro oba editory. Emacs má režim specifický pro Rust a Vim má plugin pro zvýraznění a formátování syntaxe. Podpora RLS je k dispozici jak pro Emacs, tak pro Vim, ale musí být přidána a nakonfigurována ručně.
  • Uživatelé IntelliJ Idea a Atom mohou přidávat doplňky k doplnění podpory Rust.
  • Sublime Text má podporu Rust syntaxe ihned po vybalení a doplňky poskytují hlubší podporu pro další funkce.
  • Projekt na vytvoření jednoduchého IDE speciálně pro Rust, SolidOak, byl vyvíjen nějakou dobu, ale od té doby se zastavil. Nejlepším řešením je jít s jedním ze stávajících IDE, které již mají podporu.

Vytvořte svůj první projekt Rust

Rustové projekty mají mít konzistentní adresářovou strukturu a určitým způsobem v nich uloženy kód a metadata projektu. Kód je uložen v a src podadresář a podrobnosti o projektu jsou uloženy ve dvou souborech v kořenovém adresáři projektu,Cargo.toml (základní informace o projektu) a Cargo.lock (automaticky generovaný seznam závislostí). Tuto adresářovou strukturu a metadata můžete vytvořit ručně, ale je to jednodušší, když k tomu použijete Rustovy vlastní nástroje.

Spropitné:Online průvodce Rust By Example k učení Rust poskytuje interaktivní ukázky kódu, které lze upravovat a spouštět přímo v prohlížeči. Dotýká se téměř každého významného konceptu Rust, ačkoli některé z klíčových konceptů, jako jsou půjčky a životy, jsou v diskusi představeny relativně pozdě.

Nástroj Rust Cargo spravuje jak projekty Rust, tak knihovny, které „používají“. Roztočit nový projekt Rust s názvem můj projekt do vlastního adresáře zadejte cargo new my_project. (Pro vývojáře C # pracující s .Net Core si představte dotnet nový Příkaz.) Nový projekt se objeví v podadresáři s tímto názvem spolu se základním manifestem projektu - Cargo.toml soubor - a útržek zdrojového kódu projektu v a src podadresář.

Když vytváříte nový projekt, amain.rs soubor se automaticky vytvoří v src adresář projektu. Tento soubor obsahuje základní aplikaci „hello world“, takže si můžete svůj Rust toolchain hned vyzkoušet kompilací a spuštěním.

Zdrojový kód aplikace „hello world“:

fn main () {

println! („Hello World!“);

}

Chcete-li jej vytvořit a spustit, zadejte kořen adresáře projektu a zadejte nákladní běh. Ve výchozím nastavení vytváří Cargo projekty v režimu ladění. Chcete-li spustit v režimu vydání, použijte nákladní náklad - vydání. Binární soubory jsou postaveny v cíl / ladění nebo cíl / uvolnění podadresář projektu podle toho, jaký profil kompilace používáte.

Práce s přepravkami Rust

Správa balíčků je klíčovou součástí každého moderního programovacího prostředí. Za tímto účelem poskytuje Rust „bedny“, což jsou knihovny třetích stran zabalené pro distribuci s nástroji společnosti Rust. Bedny najdete v oficiálním registru balíků Rust, Crates.io.

Pokud je váš projekt závislý na konkrétní bedně, musíte tuto bednu určit úpravou projektu Cargo.toml soubor. Standardní způsob, jak to udělat, je ručně - to znamená jednoduše upravit Cargo.toml přímo s textovým editorem. Při příštím sestavení projektu Rust automaticky získá všechny potřebné závislosti.

Spropitné: Dva nástroje, upravit náklad a náklad-upravit-místně, může aktualizovat závislosti z příkazového řádku, i když se jedná o neoficiální projekty třetích stran.

Když stavíte projekt Rust, který závisí na externích bednách, Cargo tyto bedny standardně hledá na Crates.io; nemusíte je získávat ručně. Na bedny ve svém projektu můžete také odkazovat podle URL, nikoli podle názvu přepravky, v případě, že potřebujete přepravku, která není hostována v registru, například něco ze soukromého úložiště.

Všimněte si, že některé bedny ano pouze instalovat a stavět na nočním kanálu Rust, protože využívají experimentální funkce, které v jiných kanálech nejsou k dispozici. Pokud jste na kanálu vydání a pokusíte se nainstalovat takovou bednu, nebudete dostávat žádné varování, dokud selže samotná kompilace. Dokumentace přepravky obvykle zmiňuje, zda to vyžaduje noční kanál, nebo ne, proto si je přečtěte, než je zahrnete, natož sestavte.

Přepravky mohou být dodávány s binárními soubory. Některé jsou nástroje příkazového řádku používané při vývoji Rustu; jiné jsou univerzální nástroje (napřripgrep). Chcete-li nainstalovat jednu z těchto přepravek, stačí zadat instalace nákladu . To není pouze způsob distribuce binárního souboru vytvořeného pomocí Rustu, ale pro vývojáře Rustu je to pohodlný způsob, jak je získat jako součást pracovního postupu zahrnujícího nástroje Rust.

Zkompilujte Rust na jinou platformu

Protože Rust podporuje více řetězců nástrojů, dokonce i při stejné instalaci Rustu, můžete Rust aplikace zkompilovat do cílového OS a prostředí, které se liší od toho, na kterém kompilujete.

Takové křížové kompilace vyžaduje řetěz nástrojů na platformě, na které pracujete, která odpovídá cílové platformě. Někdy, stejně jako při křížové kompilaci s Linuxem ve Windows nebo naopak, jde o něco víc, než mít linker GCC. Ale jindy je to složitější. Například pro křížové kompilace do MacOS potřebujete k dokončení úlohy knihovny Xcode IDE - cctools (ekvivalent Apple binutils) a MacOS SDK.

Nástroje třetích stran nabízejí tyto způsoby řešení těchto obtíží:

  • Jedním z takových nástrojů je Trust, šablona Travis CI a AppVeyor, která může automaticky publikovat binární verze projektu Rust. Může být vytvořen pro Linux, Windows a MacOS, i když vyžaduje použití služeb Travis CI a AppVeyor a vyžaduje, aby byl váš projekt hostován na GitHubu.
  • Další projekt, Cross, běží přímo na 64bitovém hostiteli x86 Linux, ale poskytuje to, co jeho tvůrce popisuje jako „nulové nastavení“ křížové kompilace na širokou škálu cílů, včetně 64bitových Windows a MIPS.
  • Projekt crossbuild poskytuje obraz Docker s více architekturami, který lze použít k cross-buildu mezi všemi třemi hlavními platformami.