Rust 1.46.0:track_callerとconstfnの改善

Rustチームは、Rust1.46.0の新しいバージョンを発表できることを嬉しく思います。Rustは、誰でも信頼性が高く効率的なソフトウェアを作成できるようにするプログラミング言語です。



以前のバージョンのRustをrustup経由でインストールしている場合、Rust1.46.0の入手は次のように簡単です。



rustup update stable


あなたはすでにそれを持っていない場合はrustup、次のことができ、それをインストールし、当社のウェブサイト上で適切なページからとチェックアウトの詳細な1.46.0リリースノートをGitHubの上。



安定版1.46.0に含まれるもの



このリリースはかなり小さく、const fn標準ライブラリの2つの新しいAPIの改善、安定化、およびライブラリ作成者向けの1つのオプションがあります。この発表でカバーされていないその他の変更については、詳細なリリースノートを参照してください



#[track_caller]



Rust 1.42がリリースされた3月に、 , unwrapこのような機能がパニックを引き起こしていましたそのとき、実装はまだ安定していないと述べました。Rust 1.46では、安定させました。



#[track_caller] RFC 2091 2017! , unwrap, , , . , unwrap:



pub fn unwrap(self) -> T {
    match self {
        Some(val) => val,
        None => panic!(" `Option::unwrap()`   `None`"),
    }
}


:



#[track_caller]
pub fn unwrap(self) -> T {
    match self {
        Some(val) => val,
        None => panic!(" `Option::unwrap()`   `None`"),
    }
}


!



, std::panic::Location, .



const fn



const fn , :



  • if, if let match
  • while, while let loop
  • && ||


:



const fn foo() {
  let x = [1, 2, 3, 4, 5];

  //    
  let y: &[_] = &x;
}


, , const fn, ! , , const-sha1 SHA1 . 40- Microsoft WinRT Rust.





const fn, std::mem::forget const fn. API:





, .





, Cargo Clippy .



1.46.0



, Rust 1.46.0. . !





Rust - . , .

opencollective: https://opencollective.com/rust-lang-ru.



funkill, Hirrolot andreevlex.




All Articles