Crates.io | user-panic |
lib.rs | user-panic |
version | 0.1.0 |
source | src |
created_at | 2022-02-15 06:48:25.713925 |
updated_at | 2022-02-15 06:48:25.713925 |
description | Rust Library Crate for Helpful Error messages |
homepage | |
repository | https://github.com/Adit-Chauhan/user-panic |
max_upload_size | |
id | 532602 |
size | 14,783 |
Custom Panic Messages According to the error.
Handles panics by calling a custom function using
std::panic::set_hook
and a Yaml File to generate the custom structs.
This allows for seperate error messages for seperate error and also allows the user to run some simple fixes (if possible).
Example of an API error's panic output
The Program Crashed
Error: There was an error during the API request
It seems like an error that can be fixed by you!
Please follow the following instructions to try and fix the Error
1: Try to check your Internet Connection.
2: Check if your API request quota has been exhausted.
1. Instructions on how
2. to check
3. API quota
If the error still persists
Contact the Developer at xyz@wkl.com
To replicate the above output you need to first create a yaml file as follows.
API:
message: There was an error during the API request
fix instructions:
- Try to check your Internet Connection.
- Check if your API request quota has been exhausted.
- - Instructions on how
- to check
- API quota
then you need to create the build script make sure userpanic is present in both dependencies and build dependencies in cargo.toml file
[dependencies]
user-panic = "0.1.0"
[build-dependencies]
user-panic = "0.1.0"
and make build.rs file as follows
fn main() {
println!("cargo:rerun-if-changed=errors.yaml");
println!("cargo:rerun-if-changed=build.rs");
userpanic::panic_setup!("errors.yaml"); // Enter the yaml file path here
}
This will create panic_strucs.rs
file in src directory
This file can be then imported and used with panic_any to display the custom panics
mod panic_structs;
use std::panic::panic_any;
use crate::panic_structs::API;
fn main(){
// This sets the custom hook for panic messages
userpanic::set_hooks(Some("If the error still persists\nContact the developer at xyz@wkl.com"));
// If None is passed then No developer info/message is shown.
panic_any(API);
}