Rust'i arendajate meeskond on rõõmuga tutvustada oma programmeerimiskeele uut versiooni: 1.35. Rust on programmeerimiskeel, mis võimaldab kirjutada usaldusväärseid ja tõhusalt töötavaid programmes.
Kui teil on juba Rust installitud rustupi kaudu, siis saate värskendada järgnevaga:
$ rustup update stable
Uuenduse peamine võimalus on realiseerida trait'e sulgude jaoks Fn, FnOnce, FnMut, vastavalt Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>. Lisatud on võimalus konverteerida sulgud ohtlike funktsioonide näidikutesse ning makro dbg!() kutsumine on nüüd võimalik ilma argumentideta; standardraamatukogu on stabiliseeritud.
Detailid:
- Uues versioonis on lisatud trait'ide Fn, FnOnce, FnMut realiseerimised Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>, vastavalt.
Nüüd töötab järgmine kood:
fn foo(x: Box<dyn Fn(u8) -> u8>) -> Vec<u8> {
vec![1, 2, 3, 4].into_iter().map(x).collect()
}Lisaks on võimalik sulgudest otse Box<dyn FnOnce> kutsuda:
fn foo(x: Box<dyn FnOnce()>) {
x()
} - Nüüd on sulgud võimalikud ohtlikke fn näidikutesse konverteerimisel.
Praegu on järgmine kood kehtiv:
/// The safety invariants are those of the `unsafe fn` pointer passed.
unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
f()
}fn main() {
// SAFETY: There are no invariants.
// The closure is statically prevented from doing unsafe things.
unsafe {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - Lisatud on võimalus kutsuda makrot dbg!() ilma argumentideta.
Kui sellele makrole edastada mingi väljend, siis makro kuvab selle tulemuse. Näide:
fn main() {
let mut x = 0;if dbg!(x == 1) {
x += 1;
}dbg!(x);
}Kui sellist koodi käivitada, näete:
[src/main.rs:4] x == 1 = false
[src/main.rs:8] x = 0Nüüd saate kirjutada järgmist:
fn main() {
let condition = true;if condition {
dbg!();
}
}Käivitades sellist koodi, näete:
[src/main.rs:5] - Mõned standardraamatukogu osad on stabiliseeritud
- Uued meetodid f32 ja f64 jaoks:
- f32::copysign
- f64::copysign
Tegelikult kopeerivad funktsioonid teise arvu märk. Näide:
fn main() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
} - Uued meetodid Range tüüpide jaoks
- Range::contains
- RangeFrom::contains
- RangeTo::contains
- RangeInclusive::contains
- RangeToInclusive::contains
Nende meetoditega on lihtne kontrollida, kas teatud väärtus on järjekorras:
fn main() {
if (0..=10).contains(&5) {
println!("Viis on nullist kümneni kaasatud.");
}
} - Täieliku stabiliseeritud API nimekirja leiate siit
- Uued meetodid f32 ja f64 jaoks:
- Selles uuenduses lisati Clippyle (see on programm, mis kontrollib teie koodi paljude vigade suhtes) uus kontroll drop_bounds'i jaoks. See kontroll aktiveerub, kui seatakse piirang: T: Drop - üldiste funktsioonide jaoks:
fn foo<T: Drop>(x: T) {}Omandada piirang T: Drop on kõige sagedamini viga, kuna see välistab kohe mõned tüübid nagu näiteks u8. (Loe rohkem sellest) siit)
- Cargo (keele paketihaldur) on saanud palju parandusi ja täiustusi. muudatuste täielik nimekiri
Allikas: linux.org.ru
