Tim Rust senang mengumumkan rilis versi baru, 1.42.0. Rust adalah bahasa pemrograman yang memungkinkan semua orang membuat perangkat lunak yang andal dan efisien.
Jika Anda menginstal versi Rust menggunakan alat sebelumnya rustup
, maka untuk meningkatkan ke versi 1.42.0 Anda hanya perlu menjalankan perintah berikut:
rustup update stable
Jika Anda belum menginstalnya rustup
, Anda dapat menginstalnya dari halaman yang sesuai di situs web kami, serta melihat catatan rilis terperinci di GitHub.
Apa yang termasuk dalam versi stabil 1.42.0
Inovasi utama dari Rust 1.42.0 adalah pesan panik yang lebih nyaman jika ada panggilan unwrap
, template slice, menyatakan usang Error::description
dan banyak lagi. Lihat catatan rilis untuk informasi lebih lanjut.
Pesan panik dari Option
dan Result
sekarang termasuk nomor baris yang berguna
Dalam Karat 1.41.1, panggilan unwrap()
ke nilai Option::None
menghasilkan pesan kesalahan yang mirip dengan yang berikut:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /.../src/libcore/macros/mod.rs:15:40
Demikian pula, nomor baris dalam pesan panik yang dihasilkan oleh panggilan unwrap_err
, expect
dan expect_err
, seperti metode yang sesuai untuk jenis ini Result
, juga merujuk ke internal core
.
Di Rust 1.42.0, semua delapan fungsi ini menghasilkan pesan panik yang menyertakan nomor baris dari tempat mereka dipanggil. Posting baru terlihat seperti ini:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/main.rs:2:5
Ini berarti bahwa panggilan yang salah unwrap
ada di jalur 2 dalam file src/main.rs
.
#[track_caller]
. Rust, , .
Rust 1.26 " ", . :
fn foo(words: &[&str]) {
match words {
[] => println!("empty slice!"),
[one] => println!("one element: {:?}", one),
[one, two] => println!("two elements: {:?} {:?}", one, two),
_ => println!("I'm not sure how many elements!"),
}
}
, . , , .
Rust 1.42 :
fn foo(words: &[&str]) {
match words {
["Hello", "World", "!", ..] => println!("Hello World!"),
["Foo", "Bar", ..] => println!("Baz"),
rest => println!("{:?}", rest),
}
}
..
" " (rest pattern), . , :
fn foo(words: &[&str]) {
match words {
[.., "!"] => println!("!!!"),
[start @ .., "z"] => println!("starts with: {:?}", start),
["a", end @ ..] => println!("ends with: {:?}", end),
rest => println!("{:?}", rest),
}
}
, Inside Rust , ! .
, matches!
, , true
, . :
match self.partial_cmp(other) {
Some(Less) => true,
_ => false,
}
matches!(self.partial_cmp(other), Some(Less))
|
if
:
let foo = 'f';
assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));
let bar = Some(4);
assert!(matches!(bar, Some(x) if x > 2));
use proc_macro::TokenStream;
Rust 2018 extern crate
. - , , , - extern crate proc_macro;
.
, Cargo, 2018, ; use
. , use proc_macro::TokenStream;
, , extern crate proc_macro;
. , .
API
Rust 1.42.0: Rust Cargo.
: 32- Apple 3.
Error::description
. Error::description
. :
fn description(&self) -> &str
description
&str
, , . Error
; , , , : String
. , Rust , Display
/Debug
, .
API Rust 1.0. : Rust 1.27, " ". , . , Error
. , , Error
. , description
, — , .
Apple 32- , . 3. , .
1.42.0
, Rust 1.42.0. , !
Rust - .
andreevlex, funkill, Hirrolot nlinker.