Crates.io | tiny-error |
lib.rs | tiny-error |
version | 1.0.0 |
source | src |
created_at | 2023-07-23 18:39:53.540889 |
updated_at | 2023-07-23 18:39:53.540889 |
description | A small crate for simple error handling |
homepage | |
repository | https://github.com/Sapiet1/tiny-error |
max_upload_size | |
id | 923891 |
size | 15,937 |
A tiny crate for error handling. It is able to convert items of the
Error
trait into
their messages, allowing for easy propagation.
use tiny_error::ErrorMessage;
use std::{
env,
fs,
path::PathBuf,
};
fn main() -> Result<(), ErrorMessage> {
// Text when failed:
// Error: Invalid input
// Correct Usage: `[crate_name] example/file/path.txt`
let path = get_path()?;
// Text when failed:
// Error: No such file or directory (os error 2)
let file = fs::read_to_string(path)?;
Ok(())
}
// Gets the first argument passed. If none or more were, returns an
// `ErrorMessage`.
fn get_path() -> Result<PathBuf, ErrorMessage> {
let mut args = env::args().skip(1);
let arg = args.next().filter(|_| args.next().is_none());
arg
.map(|input| input.into())
.ok_or_else(|| ErrorMessage::new(
"Invalid input\n\
Correct Usage: `[crate_name] example/file/path.txt`"
))
}