Rust 1.38 穩定版發佈

Rust 1.38 已經發布了,Rust 1.38.0 穩定版內容如下:

管道編譯(pipelined compilation)

如果想要編譯 crate,編譯器不需要完全構建依賴項,只需要它們的“元數據”(即類型、依賴項、導出的列表),元數據在編譯過程早期生成。從 Rust 1.38.0 開始,Cargo 將基於這一優勢,一旦元數據準備就緒,就自動開始構建依賴的 crate。

雖然這種變化對單個 crate 的編譯沒有任何影響,但經過測試,得到了一些報告,對於涉及多個 crate 的構建,可為乾淨的和優化的構建帶來大約 10~20% 的編譯速度 。而其他的改進並不多,速度的提高取決於運行構建的硬件。

mem::{uninitialized, zeroed}

從 1.38 開始,rustc 將為使用 mem::uninitialized 或 mem::zeroed 錯誤初始化的狹義類提供 lint。

#[deprecated] macros

#[deprecated] 屬性最初是在 Rust 1.9.0 版本中引入的。Rust 1.38.0 擴展了屬性,允許將其應用於宏,使用 deprecated 屬性將宏標記為 deprecated。

std::any::type_name

對於調試,獲取類型的名稱有時是有用的。例如,在通用代碼中,你可能希望在運行時看到函數的類型參數被實例化的具體類型,此版本可以使用 std::any::type_name 達到這一需求:

fn gen_value() -> T {
println!("Initializing an instance of {}", std::any::type_name::());
Default::default()
}
fn main() {
let _: i32 = gen_value();
let _: String = gen_value();
}
Rust 1.38 穩定版發佈

輸出結果:

Initializing an instance of i32
Initializing an instance of alloc::string::String
Rust 1.38 穩定版發佈

Rust 1.38 穩定版發佈

庫的更改

  • slice::{concat,connect,join} 現在支持 &[T] 和 &T
  • *const T 和 *mut T 現在實現 maker::Unpin
  • Arc 和 Rc 實現 FormIterator
  • iter::StepBy,Peekble,Take 實現 DoubleEndedIterator

另外,以下這些功能已經穩定:

  • Duration::div_duration_f32 和 Duration::div_duration_f64
  • ::cast 和 ::cast
  • Duration::as_secs_f32 和 Duration::as_secs_f64
  • Duration::div_f32 和 Duration::div_f64
  • Duration::from_secs_f32 和 Duration::from_secs_f64
  • Duration::mul_f32 和 Duration::mul_f64

獲取 1.38 版本方式如下:

rustup update stable
Rust 1.38 穩定版發佈

Rust 1.38 穩定版發佈

詳情見發佈公告:

https://blog.rust-lang.org/2019/09/26/Rust-1.38.0.html

Rust 的下載地址:


分享到:


相關文章: