Crates.io | try_ops |
lib.rs | try_ops |
version | 0.1.1 |
source | src |
created_at | 2022-07-06 18:00:04.771383 |
updated_at | 2022-07-07 13:43:06.975395 |
description | try catc... ops macro |
homepage | |
repository | |
max_upload_size | |
id | 620632 |
size | 5,106 |
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: