]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | #![deny(clippy::all, clippy::pedantic)] |
2 | ||
3 | use ref_cast::RefCast; | |
4 | use std::fmt::Display; | |
5 | use std::path::{Path, PathBuf}; | |
6 | use thiserror::Error; | |
7 | ||
8 | #[derive(Error, Debug)] | |
9 | #[error("failed to read '{file}'")] | |
10 | struct StructPathBuf { | |
11 | file: PathBuf, | |
12 | } | |
13 | ||
14 | #[derive(Error, Debug, RefCast)] | |
15 | #[repr(C)] | |
16 | #[error("failed to read '{file}'")] | |
17 | struct StructPath { | |
18 | file: Path, | |
19 | } | |
20 | ||
21 | #[derive(Error, Debug)] | |
22 | enum EnumPathBuf { | |
23 | #[error("failed to read '{0}'")] | |
24 | Read(PathBuf), | |
25 | } | |
26 | ||
27 | fn assert<T: Display>(expected: &str, value: T) { | |
28 | assert_eq!(expected, value.to_string()); | |
29 | } | |
30 | ||
31 | #[test] | |
32 | fn test_display() { | |
33 | let path = Path::new("/thiserror"); | |
34 | let file = path.to_owned(); | |
35 | assert("failed to read '/thiserror'", StructPathBuf { file }); | |
36 | let file = path.to_owned(); | |
37 | assert("failed to read '/thiserror'", EnumPathBuf::Read(file)); | |
38 | assert("failed to read '/thiserror'", StructPath::ref_cast(path)); | |
39 | } |