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 {
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 {}
fn error() -> Result<(), Box<dyn std::error::Error>> {
Err(Box::new(NullPointerException::new("get out of here")))
}
The macro expand to: