Tím Rust s potešením oznamuje najnovšiu verziu svojho jazyka: 1.35. Rust je programovací jazyk, ktorý vám umožňuje písať robustné a efektívne programy.
Ak už máte Rust nainštalovaný cez rustup, môžete ho aktualizovať príkazom:
$ rustup aktualizácia stabilná
Hlavnou aktualizáciou je implementácia uzatváracích vlastností Fn, FnOnce a FnMut pre Box. , Krabica , Krabica , v uvedenom poradí. Bola pridaná možnosť pretypovať uzávierky na ukazovatele nebezpečných funkcií, makro dbg!() je teraz možné volať bez argumentov a štandardná knižnica bola stabilizovaná.
K detailom:
- Nová verzia pridáva implementácie vlastností Fn, FnOnce a FnMut pre Box. , Krabica , Krabica , v uvedenom poradí.
Teraz bude tento kód fungovať:
fn foo(x: Box u8>) -> Vec {
vec![1, 2, 3, 4].into_iter().map(x).collect()
}Uzavretie môžete zavolať aj priamo z Boxu. :
fn foo(x: Box ) {
x()
} - Uzávery je teraz možné pretypovať na ukazovatele na nebezpečnú funkciu fn.
Momentálne je tento kód platný:
/// Bezpečnostné invarianty sú tie, ktoré má odovzdaný ukazovateľ `unsafe fn`.
nebezpečná funkcia call_unsafe_fn_ptr(f: nebezpečná funkcia()) {
f()
}fnmain() {
// BEZPEČNOSŤ: Neexistujú žiadne invarianty.
// Uzáver je staticky zabránený v vykonávaní nebezpečných činností.
nebezpečný {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - Pridaná možnosť volať makro dbg!() bez argumentov.
Ak tomuto makru zadáte výraz, vypíše sa jeho výsledok. Príklad:
fnmain() {
nech mut x = 0;ak dbg!(x == 1) {
x + = 1;
}dbg!(x);
}Keď spustíte tento kód, uvidíte:
[zdroj/main.rs:4] x == 1 = nepravda
[zdroj/main.rs:8] x = 0Teraz môžete písať takto:
fnmain() {
nech podmienka = pravda;ak podmienka {
dbg!();
}
}Keď spustíte tento kód, uvidíte:
[zdroj/main.rs:5] - Niektoré časti štandardnej knižnice boli stabilizované.
- Nové metódy pre f32 a f64:
- f32::copysign
- f64::copysign
Funkcie v podstate kopírujú znamienko iného čísla. Príklad:
fnmain() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
} - Pridané nové metódy pre typy Range
- Rozsah::obsahuje
- RangeFrom::contains
- RozsahDo::obsahuje
- RangeInclusive::contains
- RozsahVrátane::obsahuje
Pomocou týchto metód môžete jednoducho skontrolovať, či sa určitá hodnota nachádza v postupnosti:
fnmain() {
ak (0..=10).obsahuje(&5) {
println!("V číslach od nuly do desiatich je zahrnutých päť.");
}
} - Úplný zoznam stabilizovaných API nájdete tu
- Nové metódy pre f32 a f64:
- V tejto aktualizácii pridal Clippy (program, ktorý kontroluje váš kód na množstvo chýb) novú kontrolu pre drop_bounds. Táto kontrola sa spustí pri nastavení obmedzenia: T: Drop – pre generické funkcie:
fn foo (x: T) {}Obmedzenie T: Drop je často chybou, pretože okamžite vylučuje určité typy, ako napríklad u8. (Viac si o tom môžete prečítať tu)
- Veľa vylepšení a opráv v Cargo (správcovi jazykových balíkov), kompletný zoznam zmien
Zdroj: linux.org.ru
