Rust 1.50 Dirilis – Apa yang Baru?

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Rust 1.50 Rilis
Ilustrasi Rilis Rust 1.50

TeknoCerdas.com – Salam cerdas untuk kita semua. Beberapa hari lalu tepatnya 11 Februari 2021 pengembang Rust telah merilis versi terbarunya yaitu Rust 1.50. Apa saja yang baru pada versi Rust kali ini? TeknoCerdas akan coba membeberkan beberapa ringkasannya.

Sekedar mengingat Rust adalah bahasa pemrograman multi-paradigma yang berfokus pada kecepatan dan keamanan baik dalam keamanan penggunaan memori atau konkurensi. (Wikipedia)

Baca Juga
Belajar Bahasa Pemrograman Rust

Apa yang baru di Rust 1.50?

Secara garis besar Rust 1.50 mengalami pengingkatan pada Array indexing, perluasan keamanan pada field union, dan penambahan beberapa standard library baru.

Const-generic array indexing

Pada versi terbaru ini indexing operator [] juga bekerja pada type level yang sebelumnya hanya bekerja pada array saja. Berikut ini adalah contoh penerapannya.

fn second(container: &C) -> &C::Output
where
    C: std::ops::Index + ?Sized,
{
    &container[1]
}

fn main() {
    let array: [i32; 3] = [1, 2, 3];
    assert_eq!(second(&array[..]), &2); // slices worked before
    assert_eq!(second(&array), &2); // now it also works directly
}

Pengulangan const pada Array

Penggunaan pengulangan sebuah konstanta pada array telah distabilkan. Sebagaimana diketahui pada Rust sebuah array dapat ditulis dalam bentuk [a, b, c] atau diulang seperti [x; n]. Pada versini penggunaan repitisi konstanta pada array distabilkan. Berikut contohnya.

fn main() {
    // Ini tidak diperbolehkan, karena `Option>` tidak mengimplementasikan `Copy`.
    let array: [Option>; 10] = [None; 10];

    const NONE: Option> = None;
    const EMPTY: Option> = Some(Vec::new());

    // Pengulangan konstanta diperbolehkan, meskipun harus dideklarasikan dulu sebelumnya
    let nones = [NONE; 10];
    let empties = [EMPTY; 10];
}

Nilai niche untuk File pada Platform Unix

Pada platform Unix dan Unix-like standar pustaka Rust yaitu File yang otomatis juga menggunakan kode file descriptor dari Unix yaitu 0, 1, 2. File descriptor akan mengembalikan -1 jika terjadi kesalahan. Karena -1 tidak bisa digunakan sebagai file descriptor. Pada Rust 1.50 nilai niche ini akan dimasukkan pada Option.

Perubahan Pustaka

Pada Rust 1.50 terdapat beberapa fungsi baru yaitu:

  • bool::then
  • btree_map::Entry::or_insert_with_key
  • f32::clamp
  • f64::clamp
  • hash_map::Entry::or_insert_with_key
  • Ord::clamp
  • RefCell::take
  • slice::fill
  • UnsafeCell::get_mut

Untuk changelog lengkap pada rilis Rust 1.50 ini dapat merujuk ke halaman changelog 1.50.