summaryrefslogtreecommitdiffstats
path: root/vendor/derive_more/tests/error/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/derive_more/tests/error/mod.rs')
-rw-r--r--vendor/derive_more/tests/error/mod.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/derive_more/tests/error/mod.rs b/vendor/derive_more/tests/error/mod.rs
new file mode 100644
index 000000000..5d7190d8f
--- /dev/null
+++ b/vendor/derive_more/tests/error/mod.rs
@@ -0,0 +1,56 @@
+use std::error::Error;
+
+/// Derives `std::fmt::Display` for structs/enums.
+/// Derived implementation outputs empty string.
+/// Useful, as a way to formally satisfy `Display` trait bound.
+///
+/// ## Syntax:
+///
+/// For regular structs/enums:
+///
+/// ```
+/// enum MyEnum {
+/// ...
+/// }
+///
+/// derive_display!(MyEnum);
+/// ```
+///
+/// For generic structs/enums:
+///
+/// ```
+/// struct MyGenericStruct<T, U> {
+/// ...
+/// }
+///
+/// derive_display!(MyGenericStruct, T, U);
+/// ```
+macro_rules! derive_display {
+ (@fmt) => {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ write!(f, "")
+ }
+ };
+ ($type:ident) => {
+ impl ::std::fmt::Display for $type {
+ derive_display!(@fmt);
+ }
+ };
+ ($type:ident, $($type_parameters:ident),*) => {
+ impl<$($type_parameters),*> ::std::fmt::Display for $type<$($type_parameters),*> {
+ derive_display!(@fmt);
+ }
+ };
+}
+
+mod derives_for_enums_with_source;
+mod derives_for_generic_enums_with_source;
+mod derives_for_generic_structs_with_source;
+mod derives_for_structs_with_source;
+
+#[cfg(feature = "nightly")]
+mod nightly;
+
+derive_display!(SimpleErr);
+#[derive(Default, Debug, Error)]
+struct SimpleErr;