Das Rust-Team freut sich, die Veröffentlichung einer neuen Version, 1.39.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 rustup
installiert rustup
, müssen Sie nur den folgenden Befehl rustup
, um auf Version 1.39.0 zu aktualisieren:
$ rustup update stable
Wenn Sie rustup
noch nicht installiert rustup
, können Sie es von der entsprechenden Seite unserer Website installieren und rustup
zu GitHub lesen.
Was ist in der stabilen Version 1.39.0 enthalten
Zu den wichtigsten Neuerungen zählen die async
/ .await
, gemeinsame Verweise auf bewegliche Werte in match-guards
und die Attribute von Funktionsparametern. Weitere Informationen finden Sie in den ausführlichen Versionshinweisen .
.await
Sie sich mit .await
over async fn
Zuvor hatten wir in Rust 1.36.0 die Verfügbarkeit des Future
Merkmals angekündigt . Dann haben wir festgestellt, dass:
Wir hoffen, dass diese Innovation es populären Kisten, Bibliotheken und dem gesamten Ökosystem ermöglicht, sich auf die async
/ .await
vorzubereiten, die in naher Zukunft stabilisiert werden soll.
Das Versprechen wird gegeben - das Versprechen wird erfüllt. Wir freuen uns, .await
zu können, dass die lang erwartete asynchrone / .await
, mit der wir asynchrone Funktionen und Blöcke ( async
) definieren und auf ihre Ausführung warten können ( .await
), endlich stabil ist!
Eine asynchrone Funktion, die mithilfe der asynchronen async fn
Syntax (anstelle der üblichen fn
) definiert wurde, führt nichts aus, außer dass beim Aufruf ein Objekt zurückgegeben wird, das das Future
Merkmal implementiert. Dieses Objekt ist eine angehaltene Berechnung, die mit der .await
Syntax abgeschlossen werden kann. Darüber hinaus fungieren async fn
, async { ... }
und async move { ... }
als Abschlüsse und können zum Definieren asynchroner Literale verwendet werden.
Weitere Informationen zur Veröffentlichung von async
/ .await
im Blog-Beitrag von Niko Matsakis .
Gemeinsame Links zu Roaming-Werten in match-guards
Beim Abgleichen eines Bildes kann eine als Bindung bezeichnete Variable auf eine der folgenden Arten gebunden werden:
Durch Bezugnahme unveränderlich oder veränderlich. Dies kann beispielsweise explizit mit der Syntax ref my_var
bzw. ref mut my_var
. Fast immer wird der Fangmodus automatisch angezeigt.
Nach Wert - entweder durch Kopieren (wenn der Typ der gebundenen Variablen das Merkmal Copy
implementiert) oder durch Übertragen in den Besitz .
Jetzt ist es zulässig, Vorlagenvariablen in if-Einschränkungen der Vorlage zu verwenden, wenn das Eigentumsrecht auf diese Variable übertragen wird (d. H. Auf die Variable in der Vorlage für das Binden durch Verschieben). Zuvor wurde der folgende Code verworfen:
fn main() { let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]); match array { nums
Ab Rust 1.39.0 akzeptiert der Compiler das obige Fragment ohne Warnungen und Fehler. Wir hoffen, dass diese Innovation die Benutzerfreundlichkeit des match
Ausdrucks verbessert.
Attribute für Funktionsparameter
Ab Rust 1.39.0 können Attribute auf Funktionsparameter, Abschlüsse und Funktionszeiger angewendet werden. Bisher konnte die len()
-Funktion wie folgt dargestellt werden:
#[cfg(windows)] fn len(slice: &[u16]) -> usize { slice.len() } #[cfg(not(windows))] fn len(slice: &[u8]) -> usize { slice.len() }
Aber Rust 1.39.0 macht das Schreiben des obigen Codes viel einfacher:
fn len( #[cfg(windows)] slice: &[u16],
Verwendbare Attribute sind:
Bedingte Kompilierung: cfg
und cfg_attr
;
Check Management: allow
, warn
, deny
und forbid
;
Hilfsattribute, die von prozeduralen Attributmakros für Syntaxelemente verwendet werden.
Wir hoffen, dass diese Innovation dem Ökosystem hilft, aussagekräftigere makrobasierte DSLs zu schreiben.
Migrationswarnungen zu Leihschecks werden in Rust 2018 zu schwerwiegenden Fehlern
In Release 1.35.0 haben wir angekündigt, dass der neue Kreditanalysator (NLL) den Redakteuren von Rust 2015 zur Verfügung gestellt wurde, nachdem er den Redakteuren von Rust 2018 in Version 1.31 zur Verfügung gestellt wurde .
Wie in Release 1.35.0 angegeben, wurde der vorherige Ausleihanalysator mit Fehlern entwickelt, die eine unsichere Speichernutzung ermöglichten. Diese Fehler wurden mit einem neuen Analysator behoben, der NLL implementiert. Da diese Korrekturen den Arbeitscode verletzen könnten, entschied sich das Rust-Team, sie schrittweise einzuführen und zu überprüfen, ob der vorherige Analysator den Code akzeptieren sollte, den der neue Analysator ablehnen würde. In diesem Fall werden die Fehler stattdessen zu Warnungen.
Ab Rust 1.39.0 sind diese Warnungen jetzt Fehler in der Version Rust 2018 .
In der nächsten Version von Rust 1.40.0 wird diese Regel auch auf den Rust 2015-Revisionscode angewendet, wodurch der alte Ausleihanalysator vollständig aus dem Compiler entfernt wird.
Wenn Sie von diesen Änderungen betroffen sind oder mehr erfahren möchten, lesen Sie den Blog-Beitrag von Niko Matsakis .
Konstantere Funktionen in der Standardbibliothek
Ab Rust 1.39.0 sind folgende Funktionen als const fn
( const fn
) gekennzeichnet:
Stabile Funktionen in der Standardbibliothek
Folgende Funktionen wurden in Rust 1.39.0 stabilisiert:
Andere Änderungen
Die Syntax , der Frachtpaket-Manager und der Clippy-Analysator wurden ebenfalls geändert.
Bitte lesen Sie die Kompatibilitätshinweise, um festzustellen, ob sich diese Änderungen auf Sie auswirken.
Mitglieder 1.39.0
Viele Leute kamen zusammen, um Rust 1.39.0 zu erstellen. Ohne euch alle hätten wir das nicht geschafft, danke !
Von Übersetzern
Bei Fragen zur Rust-Sprache können sie Ihnen im russischsprachigen Telegramm-Chat oder in einem ähnlichen Chat für Neulinge helfen.
Dieser Artikel wurde gemeinsam übersetzt von andreevlex , blandger , funkill und Hippolot .