Das Rust-Team freut sich, die Veröffentlichung einer neuen Version 1.42.0 bekannt zu geben. Rust ist eine Programmiersprache, mit der jeder zuverlÀssige und effiziente Software erstellen kann.
Wenn Sie die vorherige Version von Rust mit Tools installiert haben rustup
, mĂŒssen Sie zum Upgrade auf Version 1.42.0 nur den folgenden Befehl ausfĂŒhren:
rustup update stable
Wenn Sie es noch nicht installiert haben rustup
, können Sie es auf der entsprechenden Seite unserer Website installieren und detaillierte Versionshinweise auf GitHub lesen.
Was ist in der stabilen Version 1.42.0 enthalten
Die Hauptinnovationen von Rust 1.42.0 sind bequemere Panikmeldungen im Falle eines Anrufs unwrap
, Slice-Vorlagen, die fĂŒr veraltet erklĂ€rt werden Error::description
und vieles mehr. Siehe Release Notes fĂŒr weitere Informationen.
Panikmeldungen von Option
und enthalten Result
jetzt nĂŒtzliche Zeilennummern
In Rust 1.41.1 erzeugte ein Aufruf unwrap()
eines Werts Option::None
eine Fehlermeldung Àhnlich der folgenden:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /.../src/libcore/macros/mod.rs:15:40
In Àhnlicher Weise beziehen sich Zeilennummern in Panikmeldungen, die durch Anrufe generiert wurden unwrap_err
, expect
und expect_err
wie die entsprechenden Methoden fĂŒr den Typ Result
auch auf Interna core
.
In Rust 1.42.0 generieren alle diese acht Funktionen Panikmeldungen, die die Zeilennummern enthalten, von denen aus sie aufgerufen wurden. Neue BeitrĂ€ge sehen ungefĂ€hr so ââaus:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/main.rs:2:5
Dies bedeutet, dass sich der fehlerhafte Aufruf unwrap
in Zeile 2 der Datei befand 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.