From cf62d1a9f979ee9df9a615fbf8f369f2d7daef94 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 27 Jul 2023 14:54:57 +0200 Subject: [PATCH] chore: remove need for `cargo readme` Just use `#![doc = include_str!("../README.md")]` Signed-off-by: Harald Hoyer --- .github/workflows/rust.yml | 15 +----- README.md | 10 +--- src/lib.rs | 99 +------------------------------------- 3 files changed, 3 insertions(+), 121 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 2f81b29..3fc2545 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: version: - - 1.46.0 + - 1.54.0 - stable - beta - nightly @@ -70,16 +70,3 @@ jobs: with: command: clippy args: -- -D warnings - - readme: - name: cargo readme - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable - profile: minimal - override: true - - run: cargo install cargo-readme - - run: cargo readme > README.md && git diff --exit-code diff --git a/README.md b/README.md index 2441848..7a7b3a9 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,6 @@ [![Crate](https://img.shields.io/crates/v/chainerror.svg)](https://crates.io/crates/chainerror) [![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/chainerror/) -[![Coverage Status](https://coveralls.io/repos/github/haraldh/chainerror/badge.svg?branch=master)](https://coveralls.io/github/haraldh/chainerror?branch=master) -[![Workflow Status](https://github.com/haraldh/chainerror/workflows/Rust/badge.svg)](https://github.com/haraldh/chainerror/actions?query=workflow%3A%22Rust%22) -[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/haraldh/chainerror.svg)](https://isitmaintained.com/project/haraldh/chainerror "Average time to resolve an issue") -[![Percentage of issues still open](https://isitmaintained.com/badge/open/haraldh/chainerror.svg)](https://isitmaintained.com/project/haraldh/chainerror "Percentage of issues still open") +[![Coverage Status](https://codecov.io/gh/haraldh/chainerror/branch/master/graph/badge.svg?token=HGLJFGA11B)](https://codecov.io/gh/haraldh/chainerror) ![Maintenance](https://img.shields.io/badge/maintenance-activly--developed-brightgreen.svg) # chainerror @@ -93,11 +90,6 @@ Along with the `ChainError` struct, `chainerror` comes with some useful helpe Debug information is worth it! -### Features - -`display-cause` -: turn on printing a backtrace of the errors in `Display` - ## Tutorial Read the [Tutorial](https://haraldh.github.io/chainerror/tutorial1.html) diff --git a/src/lib.rs b/src/lib.rs index 0ea1dbe..50dbd51 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,101 +1,4 @@ -//! `chainerror` provides an error backtrace without doing a real backtrace, so even after you `strip` your -//! binaries, you still have the error backtrace. -//! -//! Having nested function returning errors, the output doesn't tell where the error originates from. -//! -//! ```rust -//! use std::path::PathBuf; -//! -//! type BoxedError = Box; -//! fn read_config_file(path: PathBuf) -> Result<(), BoxedError> { -//! // do stuff, return other errors -//! let _buf = std::fs::read_to_string(&path)?; -//! // do stuff, return other errors -//! Ok(()) -//! } -//! -//! fn process_config_file() -> Result<(), BoxedError> { -//! // do stuff, return other errors -//! let _buf = read_config_file("foo.txt".into())?; -//! // do stuff, return other errors -//! Ok(()) -//! } -//! -//! fn main() { -//! if let Err(e) = process_config_file() { -//! eprintln!("Error:\n{:?}", e); -//! } -//! } -//! ``` -//! -//! This gives the output: -//! ```console -//! Error: -//! Os { code: 2, kind: NotFound, message: "No such file or directory" } -//! ``` -//! and you have no idea where it comes from. -//! -//! -//! With `chainerror`, you can supply a context and get a nice error backtrace: -//! -//! ```rust -//! use chainerror::prelude::v1::*; -//! use std::path::PathBuf; -//! -//! type BoxedError = Box; -//! fn read_config_file(path: PathBuf) -> Result<(), BoxedError> { -//! // do stuff, return other errors -//! let _buf = std::fs::read_to_string(&path).context(format!("Reading file: {:?}", &path))?; -//! // do stuff, return other errors -//! Ok(()) -//! } -//! -//! fn process_config_file() -> Result<(), BoxedError> { -//! // do stuff, return other errors -//! let _buf = read_config_file("foo.txt".into()).context("read the config file")?; -//! // do stuff, return other errors -//! Ok(()) -//! } -//! -//! fn main() { -//! if let Err(e) = process_config_file() { -//! eprintln!("Error:\n{:?}", e); -//! # let s = format!("{:?}", e); -//! # let lines = s.lines().collect::>(); -//! # assert_eq!(lines.len(), 5); -//! # assert!(lines[0].starts_with("src/lib.rs:")); -//! # assert_eq!(lines[1], "Caused by:"); -//! # assert!(lines[2].starts_with("src/lib.rs:")); -//! # assert_eq!(lines[3], "Caused by:"); -//! # assert_eq!(lines[4], "Os { code: 2, kind: NotFound, message: \"No such file or directory\" }"); -//! } -//! # else { panic!(); } -//! } -//! ``` -//! -//! with the output: -//! ```console -//! Error: -//! examples/simple.rs:14:51: read the config file -//! Caused by: -//! examples/simple.rs:7:47: Reading file: "foo.txt" -//! Caused by: -//! Os { code: 2, kind: NotFound, message: "No such file or directory" } -//! ``` -//! -//! `chainerror` uses `.source()` of `std::error::Error` along with `#[track_caller]` and `Location` to provide a nice debug error backtrace. -//! It encapsulates all types, which have `Display + Debug` and can store the error cause internally. -//! -//! Along with the `ChainError` struct, `chainerror` comes with some useful helper macros to save a lot of typing. -//! -//! `chainerror` has no dependencies! -//! -//! Debug information is worth it! -//! -//! # Tutorial -//! -//! Read the [Tutorial](https://haraldh.github.io/chainerror/tutorial1.html) - +#![doc = include_str!("../README.md")] #![deny(clippy::all)] #![allow(clippy::needless_doctest_main)] #![deny(missing_docs)]