#![allow(clippy::extra_unused_type_parameters)] | |
use std::io; | |
use thiserror::Error; | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub struct ErrorStruct { | |
#[from] | |
source: io::Error, | |
} | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub struct ErrorStructOptional { | |
#[from] | |
source: Option<io::Error>, | |
} | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub struct ErrorTuple(#[from] io::Error); | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub struct ErrorTupleOptional(#[from] Option<io::Error>); | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub enum ErrorEnum { | |
Test { | |
#[from] | |
source: io::Error, | |
}, | |
} | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub enum ErrorEnumOptional { | |
Test { | |
#[from] | |
source: Option<io::Error>, | |
}, | |
} | |
#[derive(Error, Debug)] | |
#[error("...")] | |
pub enum Many { | |
Any(#[from] anyhow::Error), | |
Io(#[from] io::Error), | |
} | |
fn assert_impl<T: From<io::Error>>() {} | |
#[test] | |
fn test_from() { | |
assert_impl::<ErrorStruct>(); | |
assert_impl::<ErrorStructOptional>(); | |
assert_impl::<ErrorTuple>(); | |
assert_impl::<ErrorTupleOptional>(); | |
assert_impl::<ErrorEnum>(); | |
assert_impl::<ErrorEnumOptional>(); | |
assert_impl::<Many>(); | |
} |