Дастаи таҳияи Rust бо хушнудӣ версияи охирини забони худро эълон мекунад: 1.35. Rust як забони барномасозӣ мебошад, ки ба шумо имкон медиҳад, ки барномаҳои устувор ва муассир нависед.
Агар шумо аллакай Rust-ро тавассути rustup насб карда бошед, шумо метавонед онро бо фармон навсозӣ кунед:
$ Rustup навсозии устувор
Навсозии асосӣ татбиқи хусусиятҳои пӯшидани Fn, FnOnce ва FnMut барои Box мебошад. , Қуттии , Қуттии , мутаносибан. Имконияти интиқол додани бастаҳо ба нишондиҳандаҳо ба функсияҳои хатарнок илова карда шуд, макроси dbg!() акнун метавонад бидуни аргумент даъват карда шавад ва китобхонаи стандартӣ устувор карда шуд.
Ба тафсилот:
- Версияи нав татбиқи хислатҳои Fn, FnOnce ва FnMut-ро барои Box илова мекунад. , Қуттии , Қуттии , мутаносибан.
Акнун ин код кор хоҳад кард:
fn foo(x: Қуттии u8>) -> Vec {
vec![1, 2, 3, 4].into_iter().map(x).collect()
}Шумо инчунин метавонед бевосита аз Box занг занед. :
fn foo(x: Қуттии ) {
x()
} - Пӯшидаҳо акнун метавонанд ба нишондодҳо ба fn-и хатарнок интиқол дода шаванд.
Дар айни замон, ин код эътибор дорад:
/// Инвариантҳои бехатарӣ инҳоянд, ки нишоннамои "fn хатарнок" гузаштаанд.
unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
f()
}fn main() {
// АМНИЯТ: Инвариантҳо вуҷуд надоранд.
// Бастан аз иҷрои корҳои хатарнок ба таври статикӣ пешгирӣ карда мешавад.
бехатар {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - Имконияти занг задан ба макроси dbg!() бе далелҳо илова карда шуд.
Агар шумо ифодаро ба ин макрос интиқол диҳед, он натиҷаи худро чоп мекунад. Мисол:
fn main() {
бигзор mut x = 0;агар dbg!(x == 1) {
x += 1;
}dbg!(x);
}Вақте ки шумо ин кодро иҷро мекунед, шумо хоҳед дид:
[src/main.rs:4] x == 1 = бардурӯғ
[src/main.rs:8] x = 0Акнун шумо метавонед чунин нависед:
fn main() {
бигзор шарт = дуруст;агар шарт {
dbg!();
}
}Вақте ки шумо ин кодро иҷро мекунед, шумо хоҳед дид:
[src/main.rs:5]
- Баъзе қисмҳои китобхонаи стандартӣ устувор карда шуданд.
- Усулҳои нав барои f32 ва f64:
- f32 :: нусхабардорӣ
- f64 :: нусхабардорӣ
Функсияҳо аслан аломати рақами дигарро нусхабардорӣ мекунанд. Мисол:
fn main() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
} - Усулҳои нав барои намудҳои диапазон илова карда шуданд
- Диапазон:: дорои
- RangeFrom::-ро дар бар мегирад
- RangeTo::-ро дар бар мегирад
- RangeInclusive :: дорои
- RangeToInclusive :: дорои
Бо ин усулҳо шумо метавонед ба осонӣ тафтиш кунед, ки оё арзиши муайян дар пайдарпай аст:
fn main() {
агар (0.. = 10). дорои (& 5) {
println!("Панҷ аз сифр то даҳ дохил карда шудааст.");
}
} - Шумо метавонед рӯйхати пурраи API-ҳои устуворро пайдо кунед дар ин ҷо
- Усулҳои нав барои f32 ва f64:
- Дар ин навсозӣ, Clippy (барномае, ки рамзи шуморо барои хатогиҳои зиёд тафтиш мекунад) чеки навро барои drop_bounds илова кард. Ин санҷиш ҳангоми муқаррар кардани маҳдудият оғоз мешавад: T: Drop — барои функсияҳои умумӣ:
fn foo (x: T) {}Доштани T: Маҳдудияти партофтан аксар вақт хато аст, зеро он фавран намудҳои муайянро истисно мекунад, ба монанди u8. (Шумо метавонед дар ин бора бештар хонед дар ин ҷо)
- Бисёр такмилҳо ва ислоҳҳо дар Cargo (менеҷери бастаи забон), рӯйхати пурраи тағйирот
Манбаъ: linux.org.ru
