錆1.39.0がリリースされました。このリリースのハイライトは、非同期/ .await、参照の共有バインドすることにより、動きを守っ一致し、関数の引数のプロパティが含まれています。
非同期/ .await安定
非同期/ .await特性のこのバージョンでは、あなたが今と非同期機能ブロック、および.await操作を定義することができることを意味しており、安定しています。
リターンを導入することで、Fn機能非同期非同期は、今後はハングの計算で、計算.await実行を完了するために使用することができる、フューチャーと呼ばれています。非同期FN、非同期{...}と非同期移動に加えて、{...}それらはクロージャとして作用する、ブロック「非同期文字」を定義するために使用することができます。
で、移動バインド守ら参照を一致させます
錆、または、「結合」変数のパターンマッチングは次のように定義することができる場合。
-
あなたは、変更または変数によって参照することはできません。これは、そのようなことであることができ
ref my_var
たりref mut my_var
、ほとんどの場合、結合モードが自動的に明確に、それぞれ実現される推定されます。 -
バイ値、またはバインド変数の型がでコピーのコピーを達成する場合、または、移動することによって。
過去には、錆は、次のコードが拒否されることを意味表現の構造を保護するためにによって、移動守られている場合と一致する共有結合の表現への参照を禁止します。
fn main() { let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]); match array { nums // ---- `nums` is bound by move. if nums.iter().sum::<u8>() == 10 // ^------ `.iter()` implicitly takes a reference to `nums`. => { drop(nums); // ----------- `nums` was bound by move and so we have ownership. } _ => unreachable!(), }
}
錆1.39、上記のコードは現在、この機能は、全体の一致式のために、よりスムーズで一貫した体験をもたらすことができ、受け入れコンパイラとなっています。
プロパティ関数のパラメータ
今の関数、関数ポインタとクロージャのプロパティパラメータで許可さ。
例えば、過去のこの書き込みで:
#[cfg(windows)]
fn len(slice: &[u16]) -> usize {
slice.len()
}
#[cfg(not(windows))]
fn len(slice: &[u8]) -> usize {
slice.len()
}
今、より簡潔な方法で:
fn len(
#[cfg(windows)] slice: &[u16], // This parameter is used on Windows.
#[cfg(not(windows))] slice: &[u8], // Elsewhere, this one is used.
) -> usize {
slice.len()
}
ここでは、使用できる属性は以下のとおりです。
-
条件付きコンパイル:CFGとcfg_attr
-
コントロール糸くず:、許可警告し、拒否し、禁止
-
ヘルププロパティにマクロプログラムを使用するために、プロジェクトのプロパティで使用されるプロセス
これは、全体の生態系では、より読みやすいDSLベースのマクロ言語を提供します。
constのFNの標準ライブラリの増加
このリリースでは、以下の機能がconstのFNになります:
- VEC ::新しい、文字列::新しい与LinkedListの::新
- ::ページだけ[T] ::のみ与ページ:: as_bytes
- ABS、wrapping_abs与overflowing_abs
この関数は、標準ライブラリに追加します
以下の機能が安定しています:
- ピン:: into_inner
- インスタント:: checked_duration_since与インスタント:: saturating_duration_since
詳細ビューの更新: