Rust (programozási nyelv)
A Rust egy programozási nyelv. Különlegességét az adja, hogy
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éneteGraydon 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:
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ágaA 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:
PéldakódMetódusAlá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 IterátorAz 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 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
}
CargoA Cargo a Rust programozási nyelvhez készült igen hatékony csomagkezelő.[4] Segítségével
Kódtisztaság
Jegyzetek
|
Portal di Ensiklopedia Dunia