use logcall::logcall;
use logforth::record::LevelFilter;
#[logcall]
fn add(a: i32, b: i32) -> i32 {
a + b
}
#[logcall("info")]
fn multiply(a: i32, b: i32) -> i32 {
a * b
}
#[logcall(ok = "info", err = "error")]
fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
Err("Division by zero".to_string())
} else {
Ok(a / b)
}
}
#[logcall(err = "error")]
fn divide2(a: usize, b: usize) -> Result<usize, String> {
a.checked_div(b).ok_or("divide by zero".into())
}
#[logcall(some = "info", none = "warn")]
fn find_even(value: i32) -> Option<i32> {
(value % 2 == 0).then_some(value)
}
#[logcall(input = "a = {a:?}, ..")]
fn subtract(a: i32, b: i32) -> i32 {
a - b
}
#[logcall(output = ": {:?}")]
fn negate(a: i32) -> i32 {
-a
}
#[logcall(output = "")]
fn ping(a: i32) -> i32 {
a
}
fn main() {
logforth::starter_log::stdout()
.filter(LevelFilter::All)
.apply();
add(2, 3);
multiply(2, 3);
divide(2, 0).ok();
divide2(2, 0).ok();
find_even(4);
find_even(3);
subtract(3, 2);
negate(5);
ping(42);
}