Rust 1.42 プログラミング言語のリリース

公開済み システムプログラミング言語のリリース 錆1.42, Mozilla プロジェクトによって設立されました。 この言語はメモリの安全性に重点を置き、自動メモリ管理を提供し、ガベージ コレクタやガベージ コレクタを使用せずに高いタスクの並列処理を実現するツールを提供します。 ランタイム.

Rust の自動メモリ管理により、開発者はポインタ操作から解放され、解放後のメモリ アクセス、null ポインタの逆参照、バッファ オーバーランなどの低レベルのメモリ操作から生じる問題から保護されます。 プロジェクトごとにライブラリを配布し、確実にアセンブリし、依存関係を管理するためのパッケージ マネージャーが開発されています。 貨物を使用すると、プログラムに必要なライブラリをワンクリックで取得できます。 リポジトリはライブラリをホストするためにサポートされています crates.io.

メイン イノベーション:

  • 追加した スライス (動的配列) の部分を一致させるためのテンプレートのサポート。以前は完全一致が許可されていましたが、配列の残りの要素をカバーするために「..」ラベルを持つ構造を使用する機能が追加されました。例えば:

    fn foo(単語: &[&str]) {
    一致する単語 {

    // 配列の最初の要素を無視してチェックする
    それに続く要素
    ["Hello", "World", "!", ..] => println!("Hello World!"),

    // 最初の2つの要素「Foo」と「Bar」をチェックします。残りは関係ありません
    ["Foo", "Bar", ..] => println!("Baz"),

    // すべてを無視しますが、最後の要素は "!" である必要があります。
    [.., “!”] => println!(“!!!”),

    // 開始スライスには、最後の要素(「z」)を除くすべての要素を含めます。
    [start @ .., "z"] => println!("starts with: {:?}", start),

    // 最後のスライスに、最初の要素 (「a」) 以外のすべてを配置します。
    ["a", end @ ..] => println!("ends with: {:?}", end),

    残り => println!("{:?}", 残り),
    }
    }

  • 新しいマクロ「matches!」を追加しました。式とパターンを入力として受け取り、パターンが式と一致する場合は「true」を返します。テンプレートでは「|」演算を使用できます。そして「もし」。

    マッチ self.partial_cmp(other) {
    Some(Less) => true、
    _ => 偽、
    }

    一致します!(self.partial_cmp(other), Some(Less))

    foo = 'f' とします。
    アサート!(一致!(foo、 'A'..='Z' | 'a'..='z'));

    bar = Some(4)とします。
    アサート!(一致!(bar、Some(x)、x > 2の場合));

  • 誤って使用した場合に表示されるパニックメッセージ
    オプションおよび結果タイプでは、libcore で呼び出しを実装するコードへのリンクではなく、問題のある呼び出しを行ったコードへのリンクとともに行番号が表示されるようになりました。たとえば、この変更は Option::None での unwrap および expect の呼び出しに影響し、 Result 型で unwrap_err 、 expect 、 expect_err などのメソッドを使用するとクラッシュが発生します。
  • Cargo パッケージ マネージャーは、手続き型マクロを含むパッケージの「extern」ブロックに「proc_macro crate」を自動的に置き換えるようになりました。この変更により、「extern crate proc_macro;」を必要とせずに「use」ディレクティブを手続き型マクロに適用できるようになります。コード内で指定する必要があります。たとえば、プログラムが「use proc_macro::TokenStream;」という行を使用している場合、「extern crate proc_macro;」を削除してもコードは引き続き動作するようになります。そこから。
  • 標準ライブラリの機能が拡張されました。 iter::Empty内 追加した 任意の T 値の送信と同期をサポートします。
    Pin::{map_unchecked, map_unchecked_mut} を呼び出す 配達されました 「Sized」実装の型値を返す必要がなくなります。
    io::Cursor内 実装されました PartialEq と Eq. 「const」フラグは、定数の代わりに任意のコンテキストで使用できるかどうかを決定します。 適用済み Layout::new メソッド用。
  • CondVar::wait_while、CondVar::wait_timeout_whileを含むAPIの新しい部分が安定カテゴリに移動されました。
    DebugMap::キー、DebugMap::値、
    手動でドロップ::テイク、
    ptr::slice_from_raw_parts_mut と ptr::slice_from_raw_parts。
  • Error::description メソッドは非推奨になりました。
  • armv7a-none-eabi および riscv64gc-unknown-linux-gnu プラットフォームに対してレベル 64 のサポートを提供しました。 riscvXNUMXgc-unknown-linux-gnu プラットフォームの標準ライブラリのサポートを提供しました。
    Apple 32ビットプラットフォーム 下げられた 32 番目のレベルのサポートまで、基本的なサポートが含まれますが、自動テストや公式ビルドの公開は行われません。 Apple が XNUMX ビット プラットフォームのサポートを終了したため、サポート レベルが低下しました。

出所: オープンネット.ru

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster