当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。