2 releases
0.1.1 | Jul 7, 2022 |
---|---|
0.1.0 | Jul 6, 2022 |
#2038 in Rust patterns
6KB
84 lines
Ops
What is Ops?
It's just a joke with "try { bla bla bla } catch (NullPointerException e) { bla bla bla bla }".
But i use ops,
It's created only for pratice declarative Rust macros.
But it's functional macro.
Usage:
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")))
}
The macro expand to: