fparkan/vendor/thiserror/tests/test_from.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

65 lines
1.2 KiB
Rust

#![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>();
}