Rust (programozási nyelv)

Rust

Paradigma
Jellemző kiterjesztésrs
Megjelent2006
TervezőGraydon Hoare
Fejlesztő
  • Mozilla
  • Graydon Hoare
  • Rust Foundation
Utolsó kiadás1.83.0 (stabil verzió, 2024. november 28.)[1]
Hatással volt rá
Licenc
  • Apache Licenc 2.0
  • MIT-licenc
Weboldal

A Rust egy programozási nyelv. Különlegességét az adja, hogy

  1. teljeskörűen a biztonságos programozásra törekszik,
  2. ugyanakkor lehetőséget ad „unsafe { ... }” blokkok forráskódban való elhelyezésére, amely itt olyan metódusok használatát is lehetővé teszi, amely túlmutat a fordító biztonsági garanciáin
  3. egyúttal könnyen integrálható a meglévő C-ben vagy más nyelven írt szoftverkomponensekkel.

Ezáltal a Rust biztonságos programozást tesz lehetővé, ugyanakkor a hardverközeli programozáshoz elengedhetetlen nem biztonságos megoldásokat szintén támogatja.

Története

Graydon Hoare kezdte el a nyelv fejlesztését 2006-ban, majd 2009-től a Mozilla is érdekelté vált a nyelv fejlesztésében, amit 2010-ben mutatott be. Mérföldkövek:

  • 2012: első alpha kiadás
  • 2015: Rust-1.0, ami a „Rust 2015 Edition”
  • 2018: Rust-1.31, ami a „Rust 2018 Edition”
  • 2021: Rust-1.56, ami a „Rust 2021 Edition”
  • 2024: Rust-1.85, ami a „Rust 2024 Edition” – várható kiadás, aktív tervezés alatt[2]

A Rust nyelv dinamikusan fejlődik. A fejlesztés során a fordító új stabil verziója 6 hetente jelenik meg. Az új verziókban gyakran jelentős újdonságok vannak.

Tulajdonsága

A Rust programozási nyelv[3] alapvetően a C-re és a C++-ra épít, ugyanakkor nem implementál minden C++ -paradigmát és számos más nyelvből is vesz át ötleteket. Statikusan típusos és fordított nyelv.

A hangsúly a típushelyességen, memóriakezelésen, párhuzamosságon és a teljesítményen van. Összetett memória modellt alkalmaz, ami lehetővé teszi a hatékony adatszerkezetek és biztonságos konkurens minták használatát, illetve tiltja az érvénytelen memória hozzáféréseket amik szegmentációs hibákhoz vezethetnek. Rendszerprogramozásra tervezték.

Támogatja a multi-paradigma programozást, procedurális, funkcionális és objektumorientált módon. Néhány tulajdonsága:

  • Típuskikövetkeztetés: a típusok megadások a deklarációkban opcionális általában
  • Biztonságos task alapú konkurencia kezelés: task-okat alkalmaz a párhuzamosság megvalósításához, a köztük lévő kommunikációt pedig üzenetekkel valósítja meg és nem megosztott memóriával.
  • Magasabb rendű függvények. hatékony és flexibilis closure-k biztosítják
  • Mintaillesztés és algebrai típusok: minta illesztés a felsorolási típusoknál (hatékonyabban, mint C-ben), az algebrai típusok hasonlóak a funkcionális nyelvekben lévőkhöz
  • Polimorfizmus, típusváltozós függvények és típusok, típusosztályok és objektumorientált stílusú interfészek

Példakód

Metódus

Alábbi egyszerű példában téglalap struktúrát definiálunk (szélesség, magasság), majd implementálunk rá egy area metódust, amit meghívva visszakapjuk a téglalap területét.

struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    // A new() metódus hívása látja el a konstruktor szerepét.
    // Nem kötelező new() metódust készíteni.
    fn new(w: u32, h: u32) -> Self {
       Self { width: w, height: h }
    }

    fn area(&self) -> u32 {
        self.width * self.height
    }
}

fn main() {
    let rect1 = Rectangle { width: 3, height: 2 };
    let rect2 = Rectangle { width: 4, height: 5 };
    let rect3 = Rectangle::new(10, 20);            // ha van new() metódus

    println!("Area of rect1: {}", rect1.area());
    println!("Area of rect2: {}", rect2.area());
    println!("Area of rect3: {}", rect3.area());
}

A Rust-nak nincs nyelvi szinten konstruktora, viszont szokás new() metódust készíteni, amit a rect3-nál látható módon lehet használni. Bővebben: https://www.rust-lang.org/learn

Iterátor

Az alábbi példakód egy szövegből az ismétlődő szavakat eltávolítja. Ciklus helyett a Python nyelvhez hasonlóan iterátor és adaptereinek felhasználásával tömörebb, átláthatóbb forráskód készíthető:

use std::collections::HashSet;

fn remove_dup_words(s: &str) -> String {
    let mut wordlist: HashSet<&str> = HashSet::new();

    let v: Vec<&str> = s
        .split_whitespace()
        .filter(|w| wordlist.insert(w))
        .collect();
    v.join(" ")
}

fn main() {
    let res = remove_dup_words("víz árvíz víz víz ár árvíz");
    println!("{}", res); // víz árvíz ár
}

A példában használt HashSet::insert() leírása itt látható.

Az iménti példa itertools csomag felhasználásával is megoldható:

use itertools::Itertools;

fn main() {
    let s = "víz árvíz víz víz ár árvíz";
    let res = s.split_whitespace().unique().join(" ");
    println!("{}", res); // víz árvíz ár
}

Cargo

A Cargo a Rust programozási nyelvhez készült igen hatékony csomagkezelő.[4] Segítségével

  • létrehozhatunk projektet: cargo new teszt
  • fordíthatunk programot: cargo build
  • futtathatunk (fordít + futtat): cargo run
  • futtathatunk unit tesztet: cargo test
  • benchmarkolhatunk: cargo bench
  • törölhetjük a fordítási munkamappákat: cargo clean
  • Cargo.toml állomány [dependencies] részébe beírhatjuk a fordításkor a crates.io-ról letöltendő csomag nevét akár konkrét verziószámmal együtt, netán saját git repóból letöltendő csomagot, továbbá ebben az állományban sok egyéb dolgot beállíthatunk.

Kódtisztaság

  • Egységes kódkinézet: rustfmt *.rs vagy cargo fmt[5]
  • Olyan gyakori hibák feltárása, amelyre van elegánsabb Rust kifejezés: cargo clippy[6]

Jegyzetek

Read other articles:

1985 studio album by Diana RossEaten AliveStudio album by Diana RossReleasedSeptember 24, 1985 (1985-09-24)Recorded1985Genre R&B pop Length40:25LabelRCAProducer Gibb-Galuten-Richardson Michael Jackson (co.) Diana Ross chronology Swept Away(1984) Eaten Alive(1985) Red Hot Rhythm & Blues(1987) Singles from Eaten Alive Eaten AliveReleased: September 1, 1985 Chain ReactionReleased: November 28, 1985 ExperienceReleased: April 4, 1986 Eaten Alive is the sixteenth stud...

 

British politician This article is about the British politician. He is not to be confused with Patrick Jenkins. The Right HonourableThe Lord Jenkin of RodingPCPatrick JenkinSecretary of State for the EnvironmentIn office12 June 1983 – 2 September 1985Prime MinisterMargaret ThatcherPreceded byTom KingSucceeded byKenneth BakerSecretary of State for IndustryIn office14 September 1981 – 12 June 1983Prime MinisterMargaret ThatcherPreceded byKeith JosephSucceeded byCecil Parki...

 

Pour les articles homonymes, voir Jacques Ier (prince de Monaco). Jacques de Monaco Titre Prince héréditaire de Monaco Depuis le 10 décembre 2014(9 ans, 3 mois et 27 jours) Données clés Prédécesseur Caroline, princesse de Hanovre(héritière présomptive) Biographie Titulature Prince de MonacoMarquis des Baux Dynastie Maison Grimaldi Nom de naissance Jacques Honoré Rainier Grimaldi Naissance 10 décembre 2014 (9 ans)Centre hospitalier Princesse-Grace, Monaco ...

Section of U.S. highway in Texas This article is about the section of U.S. Route 87 in Texas. For the entire route, see U.S. Route 87. Not to be confused with Texas State Highway 87. U.S. Highway 87US 87 highlighted in redRoute informationMaintained by TxDOTLength801.1 mi (1,289.2 km)Existed1935–presentMajor junctionsSouth end SH 238 in Port LavacaMajor intersections Future I-69 / US 59 / US 77 in Victoria US 90 in San Antonio I-10 in ...

 

For related races, see 2018 United States gubernatorial elections. 2018 Vermont gubernatorial election ← 2016 November 6, 2018 2020 → Turnout55.6%   Nominee Phil Scott Christine Hallquist Party Republican Democratic Popular vote 151,261 110,335 Percentage 55.19% 40.25% County results Municipality resultsScott:      40–50%      50–60%      60–70%      70–...

 

Rata-rata pendapatan tahunan negara yang dikorelasikan dengan tingkat relijiusitas nasional.[1] Korelasi antara agama dan kekayaan telah menjadi bahan penelitian akademik. Kekayaan adalah status manfaat atau kepemilikan sejumlah besar kapital dan kekuatan ekonomi. Agama adalah sebuah sistem budaya yang sering kali melibatkan kepercayaan akan unsur supranatural dan bertujuan untuk menyediakan sistem moral atau arti hidup. GDP negara umumnya dikorelasikan secara negatif dengan relijiusi...

American football player (born 1981) American football player Nick HardwickHardwick during a game in November, 2012.Los Angeles ChargersPosition:Assistant offensive line coachPersonal informationBorn: (1981-09-02) September 2, 1981 (age 42)Franklin, Indiana, U.S.Height:6 ft 4 in (1.93 m)Weight:305 lb (138 kg)Career informationHigh school:Lawrence North (Indianapolis, Indiana)College:PurdueNFL draft:2004 / Round: 3 / Pick: 66Career history As a...

 

Glaceau SmartwaterBotol Glaceau Smartwater 20ozJenis produkAir sulingPemilikCabang milik perusahaan swasta Energy Brands dari The Coca-Cola CompanyDiluncurkan1996 (Amerika), 2014 (Britania Raya),[1] 2017 (India), 2018 (Belanda, Russia)PasarAustralia, Kanada, Eropa, India, Timur Tengah, Amerika SerikatDutaJennifer Aniston (2008–2020)Gal Gadot (2020–kini)Situs webhttps://www.drinksmartwater.com Glaceau Smartwater (ditulis smartwater) adalah sebuah merek air botol milik Energy Brands...

 

جزء من سلسلة مقالات سياسة فلسطينفلسطين الدستور القانون الأساسي الفلسطيني (الدستور) الميثاق الوطني حقوق الإنسان السلطة التنفيذية الرئيس محمود عباس مجلس الوزراء الفلسطيني رئيس الوزراء محمد اشتية السلطة التشريعية المجلس الوطني الفلسطيني المجلس التشريعي الفلسطيني السلطة ...

This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: George V. Ursabia Jr. – news · newspapers · books · scholar · JSTOR (October 2020) (Learn how and when to remove this message) George V. Ursabia J...

 

Pengeboman Surabaya 2018Presiden Joko Widodo (tiga dari kiri) mengunjungi satu dari tiga gereja yang rusak akibat ledakan bom pada 13 MeiSMTBGKIGPPSWonocoloMapolrestabes SurabayaPengeboman Surabaya 2018 (Kota Surabaya)LokasiSurabaya, Jawa TimurSidoarjo, Jawa TimurKoordinat7°17′20.0″S 112°45′37.3″E / 7.288889°S 112.760361°E / -7.288889; 112.760361 7°16′54.2″S 112°43′56.6″E / 7.281722°S 112.732389°E / -7.281722; 112.73...

 

For other Pennsylvania townships with similar names, see Heidelberg Township, Pennsylvania (disambiguation). Township in Pennsylvania, United StatesHeidelberg TownshipTownshipConrad Weiser HomesteadHeidelberg TownshipLocation of Heidelberg Township in PennsylvaniaShow map of PennsylvaniaHeidelberg TownshipHeidelberg Township (the United States)Show map of the United StatesCoordinates: 40°22′36″N 76°07′59″W / 40.37667°N 76.13306°W / 40.37667; -76.13306Count...

Welsh politician (born 1943) The Right HonourableThe Lord WigleyPCWigley in 2006Member of the House of Lords Lord TemporalIncumbentAssumed office 24 January 2011Life PeerageMember of the Welsh Assemblyfor CaernarfonIn office6 May 1999 – 1 May 2003Preceded byOffice CreatedSucceeded byAlun Ffred JonesMember of Parliamentfor CaernarfonIn office28 February 1974 – 14 May 2001Preceded byGoronwy RobertsSucceeded byHywel Williams Personal detailsBornDavid Wigley (1943-04-01)...

 

Salem Rebels redirects here. For the ice hockey team from 1967 to 1970, see Roanoke Valley Rebels Minor league baseball teamSalem Red SoxFounded in 1955 Salem, Virginia Team logo Cap insignia Minor league affiliationsClassSingle-A (2022–present)Previous classes Low-A (2021) Class A-Advanced (1990–2020) Class A (1968–1989) Rookie (1963–1967) Class D (1955, 1957–1962) LeagueCarolina League (2022–present)DivisionNorth DivisionPrevious leagues Low-A East (2021) Carolina League (1968...

 

اللغة التشاموروية الاسم الذاتي (بالتسمورية: Chamorro)‏(بالتسمورية: Chamorru)‏  الناطقون 64300   الكتابة إخطاطة لاتينية  النسب لغات أسترونيزية لغات أسترونيزيةاللغات الملايو بولينيزيةWestern Malayo-Polynesian (en) لغة تشاموروية أيزو 639-1 ch  أيزو 639-2 cha  أيزو 639-3 cha  تعديل مصدري - تعديل ...

Mausoleum O. G. KhouwNama lainMausoleum Familie O. G. KhouwMausoleum Oen Giok KhouwInformasi umumJenisMausoleumGaya arsitekturArt DecoLokasiJakarta, IndonesiaAlamat TPU Petamburan, Jakarta Pusat, DKI Jakarta, IndonesiaDesain dan konstruksiArsitekG. Racina[1]Mausoleum O. G. Khouw adalah situs bersejarah berupa Mausoleum di Jakarta yang merupakan makam Oen Giok Khouw (1874-1927), seorang filoantropis terkemuka dan keturunan keluarga Khouw van Tamboen.[2][3] Jandanya, Lim...

 

Darkest color due to absence or absorption of light This article is about the color. For the race, see black people. For other uses, see Black (disambiguation). Black Clockwise, from top left: Anubis statue; American black bear; Galaxy NGC 406; The Supreme Court of the United States in October 2022; Portrait painting of Queen Victoria.     Color coordinatesHex triplet#000000sRGBB (r, g, b)(0, 0, 0)HSV (h, s, v)(0°, 0%, 0%)CIELChuv (L, C, h)(0, 0, 0°)SourceHTML/CSS[1&#...

 

Cette page présente les grades militaires en vigueur dans l'Armée impériale japonaise durant la Seconde Guerre mondiale. Officiers Grades de l'Armée impériale japonaise Traduction française Insigne d'épaule Niveau de commandement habituel 大元帥陸軍大将 (Daigensui-Rikugun-Taishō?) Grand Maréchal Empereur du Japon(Armée impériale et Marine impériale) OF-10元帥、陸軍大将 (Gensui-Rikugun-Taishō?) Maréchal Et son badge porté à la poitrine : Armée générale (Gr...

Bendera Jawa TengahJawa Tengah merupakan salah satu provinsi yang berhasil meraih prestasi dalam kontes kecantikan, baik pada skala regional, nasional maupun Internasional. Delegasi Indonesia asal Jawa Tengah yang pertama kali adalah Yayuk Rahayu Sosiawati dari Kota Semarang pada Miss International 1975. Sejarah Keikutsertaan peserta asal Jawa Tengah dimulai pada 1975-an seiring dengan pengiriman wakil Indonesia ke ajang kecantikan internasional. Terdapat banyak kontroversi yang beredar, sehi...

 

Sport with players in opposing teams Cricket is a popular team sport played at international level Ice hockey, a popular winter team sport Based on the number of participating athletes, Bandy is the second most popular winter sport in the world[1] A team sport is a type of sport where the fundamental nature of the game or sport requires the participation of multiple individuals working together as a team, and it is inherently impossible or highly impractical to execute the sport as a ...