تیم توسعه 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: جعبه ) {
ایکس()
} - اکنون می توان بسته ها را به نشانگرهای fn ناامن فرستاد.
اکنون این کد معتبر است:
/// متغیرهای ایمنی آنهایی هستند که نشانگر «ناامن fn» ارسال شده است.
fn ناامن call_unsafe_fn_ptr(f: ناامن 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() {
let condition = true;اگر شرط {
dbg!();
}
}وقتی این کد را اجرا می کنید، خواهید دید:
[src/main.rs:5] - برخی از بخش های کتابخانه استاندارد تثبیت شده است
- روش های جدید برای f32 و f64:
- f32::copysign
- f64::copysign
در واقع، توابع علامت یک عدد دیگر را کپی می کنند. مثال:
fn main() {
assert_eq!(3.5_f32.copysign(-0.42)، -3.5);
} - روش های جدید برای انواع Range اضافه شده است
- محدوده::شامل
- RangeFrom::شامل
- RangeTo::شامل
- RangeInclusive::شامل
- RangeToInclusive::شامل
با این روش ها می توانید به راحتی بررسی کنید که آیا مقدار خاصی در یک دنباله قرار دارد یا خیر:
fn main() {
if (0..=10).contains(&5) {
println! ("پنج در صفر تا ده گنجانده شده است.");
}
} - می توانید لیست کاملی از APIهای تثبیت شده را پیدا کنید اینجا
- روش های جدید برای f32 و f64:
- در این به روز رسانی، Clippy (این برنامه ای است که کد شما را برای بسیاری از خطاها بررسی می کند) یک بررسی جدید برای drop_bounds اضافه کرد. این بررسی زمانی کار می کند که شما یک محدودیت را تنظیم کنید: T: Drop - برای توابع تعمیم یافته:
fn foo (x:T){}داشتن T: محدودیت Drop اغلب یک اشتباه است، زیرا برخی از انواع فوراً حذف می شوند، مانند u8. (شما می توانید در مورد این بیشتر بخوانید. اینجا)
- بسیاری از بهبودها و اصلاحات در Cargo (مدیر بسته زبان)، لیست کامل تغییرات
منبع: linux.org.ru
