當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust panicking用法及代碼示例


本文簡要介紹rust語言中 Function std::thread::panicking 的用法。

用法

pub fn panicking() -> bool

確定當前線程是否因為Panics而展開。

此函數的一個常見用途是在編寫不安全代碼時汙染共享資源,方法是在調用 drop 時檢查 panicking

這在編寫安全代碼時通常不需要,因為當線程在持有鎖時發生Panics時,互斥鎖已經毒化了自己。

這也可以在多線程應用程序中使用,以便向其他線程發送消息,警告線程已Panics(例如,出於監視目的)。

例子

use std::thread;

struct SomeStruct;

impl Drop for SomeStruct {
    fn drop(&mut self) {
        if thread::panicking() {
            println!("dropped while unwinding");
        } else {
            println!("dropped while not unwinding");
        }
    }
}

{
    print!("a: ");
    let a = SomeStruct;
}

{
    print!("b: ");
    let b = SomeStruct;
    panic!()
}

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function std::thread::panicking。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。