2 个版本

0.1.1 2022年7月7日
0.1.0 2022年7月6日

#2078 in Rust 模式

MIT 许可证

6KB
84

操作

什么是操作?

它只是关于 "try { bla bla bla } catch (NullPointerException e) { bla bla bla bla }" 的一个玩笑。

但我使用了操作,

它仅为了实践 声明式 Rust 宏

但它是一个功能宏。

使用方法

use std::fmt::Display;

use ops::catch;

fn main() {
    catch!{() =>
        try {
            error()?;
            Ok(())
        } ops e: NullPointerException {
            //do something
            println!("{}", e)
        }
    }
}

#[derive(Debug)]
struct NullPointerException {
    message: String,
}

impl NullPointerException {
    fn new(message: &str) -> Self {
        Self { message: message.into() }
    }
}

impl Display for NullPointerException {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "NullPointerException: {}", self.message)
    }
}

impl std::error::Error for NullPointerException {}

//some stuff
fn error() -> Result<(), Box<dyn std::error::Error>> {
    Err(Box::new(NullPointerException::new("get out of here")))
}

宏展开为


无运行时依赖