A Rust fejlesztőcsapata örömmel jelenti be nyelvük új verzióját: 1.35. A Rust egy programozási nyelv, amellyel megbízható és hatékony programok írhatók.
Ha a Rust már telepítve van a rustup segítségével, frissítheti a következő paranccsal:
$ rustup frissítés stabil
A frissítésben a legfontosabb az Fn, FnOnce, FnMut, Box lezárási tulajdonságok megvalósítása. ,Doboz ,Doboz , ill. A nem biztonságos függvényekre mutató mutatók lezárásának lehetőségével a dbg!() makró meghívása immár argumentumok nélkül is lehetséges, a szabványos könyvtár pedig stabilizálódott.
A részletekhez:
- Az új verzióban hozzáadtuk az Fn, FnOnce, FnMut tulajdonságok megvalósítását a Box számára ,Doboz ,Doboz , ill.
Most ez a kód fog működni:
fn foo(x: Box u8>) -> Vec {
vec![1, 2, 3, 4].into_iter().map(x).collect()
}A bezárást közvetlenül a Box-ból is hívhatja :
fn foo(x: Box ) {
x()
} - A lezárások mostantól a nem biztonságos fn-re mutató mutatókra vethetők.
Most ez a kód érvényes:
/// A biztonsági invariánsok az átadott "unsafe fn" mutatóéi.
unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
f()
}fn main() {
// BIZTONSÁG: Nincsenek invariánsok.
// A lezárás statikusan meg van akadályozva a nem biztonságos tevékenységektől.
nem biztonságos {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - Hozzáadtuk a dbg!() makró argumentumok nélküli meghívását.
Ha valamilyen kifejezést ad át ennek a makrónak, a makró kiírja az eredményét. Példa:
fn main() {
mut x = 0;if dbg!(x == 1) {
x += 1;
}dbg!(x);
}A kód futtatásakor a következőket fogod látni:
[src/main.rs:4] x == 1 = hamis
[src/main.rs:8] x = 0Most így írhatsz:
fn main() {
legyen feltétel = igaz;if feltétel {
dbg!();
}
}A kód futtatásakor a következőket fogod látni:
[src/main.rs:5]
- A standard könyvtár egyes részeit stabilizálták
- Új módszerek f32 és f64 számára:
- f32::copysign
- f64::copysign
Valójában a függvények egy másik szám előjelét másolják. Példa:
fn main() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
} - Új metódusok hozzáadva a tartománytípusokhoz
- Tartomány::tartalmazza
- TartományFrom::tartalmazza
- RangeTo::tartalmazza
- RangeInclusive::tartalmazza
- RangeToInclusive::contains
Ezekkel a módszerekkel egyszerűen ellenőrizheti, hogy egy bizonyos érték sorozatban van-e:
fn main() {
if (0..=10).contains(&5) {
println!("Öt benne van a nullától tízig.");
}
} - Megtalálhatja a stabilizált API-k teljes listáját itt
- Új módszerek f32 és f64 számára:
- Ebben a frissítésben a Clippy (ez egy olyan program, amely számos hibát ellenőrzi a kódban) új ellenőrzést adott a drop_bounds számára. Ez az ellenőrzés akkor működik, ha beállít egy korlátot: T: Drop - általános funkciókhoz:
fn foo (x:T){}A T: Drop korlátozás megléte leggyakrabban hiba, mivel néhány típus azonnal kizárásra kerül, mint például az u8 (erről bővebben olvashat itt)
- Sok fejlesztés és javítás a Cargo-ban (nyelvi csomagkezelő), változások teljes listája
Forrás: linux.org.ru
