derail 0.3.0

An alternative to `core::error::Error`.
Documentation
use std::{rc::Rc, sync::Arc};

use derail::Error;

fn consume<E>(_: E)
where
    E: Error,
{
}

#[test]
fn box_impl() {
    #[expect(dead_code)]
    fn produce(x: Box<dyn Error<Details = ()>>) {
        consume(x);
    }
}

#[test]
fn rc_impl() {
    #[expect(dead_code)]
    fn produce(x: Rc<dyn Error<Details = ()>>) {
        consume(x);
    }
}

#[test]
fn arc_impl() {
    #[expect(dead_code)]
    fn produce(x: Arc<dyn Error<Details = ()>>) {
        consume(x);
    }
}