-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy patherror.rs
36 lines (32 loc) · 1.29 KB
/
error.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Rust language amplification derive library providing multiple generic trait
// implementations, type wrappers, derive macros and other language enhancements
//
// Written in 2019-2020 by
// Dr. Maxim Orlovsky <[email protected]>
// Elichai Turkel <[email protected]>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to
// the public domain worldwide. This software is distributed without
// any warranty.
//
// You should have received a copy of the MIT License
// along with this software.
// If not, see <https://opensource.org/licenses/MIT>.
use proc_macro2::TokenStream as TokenStream2;
use syn::{DeriveInput, Result};
pub(crate) fn inner(input: DeriveInput) -> Result<TokenStream2> {
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
let ident_name = &input.ident;
Ok(quote! {
#[automatically_derived]
impl #impl_generics ::core::error::Error for #ident_name #ty_generics #where_clause {
}
#[automatically_derived]
impl #impl_generics From<#ident_name #ty_generics> for String #where_clause {
fn from(err: #ident_name #ty_generics) -> Self {
err.to_string()
}
}
})
}