Utilities for logging and error-handling in Rust.
log!
, warn!
, and error!
macros for convenient and informational data display
eval()
as a drop in for unwrap()
Info Utils also provides eval_or()
, eval_or_default()
, and eval_or_else()
functions as drop-ins for the corresponding unwrap()
functions.
Add the following to your cargo.toml
:
toml
[dependencies]
info_utils = "1.0"
```rust use info_utils::macros::*;
fn main() { let x = 10; log!("Value is {}", x); warn!("{} is greater than 3", x); exit!("x is equal to {}, exiting..", x); // Exits with error code } ```
text
❯ cargo run
Compiling demo v0.1.0 (/Path/To/Project)
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/demo`
INFO
WARN
ERR
Terminal output is color formatted
```rust use info_utils::macros::*; use std::thread;
fn main() { log!("Hello from main thread!");
let named_thread = thread::Builder::new()
.name("named thread".into())
.spawn(||{
log!("Hello from inside a named thread!");
}).unwrap();
let unnamed_thread = thread::Builder::new()
.spawn(|| {
log!("Hello from inside an unnamed thread!");
}).unwrap();
named_thread.join().unwrap();
unnamed_thread.join().unwrap();
} ```
text
❯ cargo run
Compiling demo v0.1.0 (/Path/To/Project)
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/demo`
INFO
WARN
INFO
```rust use info_utils::prelude::*;
fn main() { let option: Option<&str> = Some("valid value"); let mut result: Result<&str, &str> = Ok("everything's fine");
log!("Option: {}\nValue: {}", option.eval(), result.eval());
result = Err("oh no something happened!");
log!("Result: {}", result.eval());
} ```
text
❯ cargo run
Compiling demo v0.1.0 (/Path/To/Project)
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/demo`INFO
INFO
Value: everything's fine
ERR
```rust use info_utils::prelude::*;
fn main() { let mut option: Option<&str> = Some("valid value"); let mut result: Result<&str, &str> = Ok("everything's fine");
log!("Option: {}\nValue: {}", option.eval(), result.eval());
result = Err("oh no something happened!");
option = None;
log!("Result: {}", result.eval_or("it's alright we can handle this"));
warn!("Option: {}", option.eval_or("option was None"));
log!("Result: {}", result.eval_or_default()); // Logs "" since that's the str default value
log!("Result: {}", result.eval_or_else(|e| {
warn!("error was: {:?}, but we're all good anyways", e);
"error handled"
}));
} ```
text
❯ cargo run
Compiling demo v0.1.0 (/Path/To/Project)
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/demo`INFO
INFO
Value: everything's fine
INFO
WARN
INFO
WARN
INFO
If you notice any issues or bugs in the package or docs please create an issue or PR addressing it.
Also feel free to file issues for feature requests.