Skip to content

Commit 7b10f6f

Browse files
committed
Re-export traits
This is blocked until [trait aliases are allowed][1]. Because right new we'd also export any derives from std with the same name. This showed up with the Debug derive. But if rust starts implementing more derives for their built in types in std, then the same issue would occur for other traits. [1]: rust-lang/rust#41517
1 parent fdf7fe1 commit 7b10f6f

22 files changed

+104
-55
lines changed

impl/src/add_like.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub fn expand(input: &DeriveInput, trait_name: &str) -> TokenStream {
4242

4343
quote! {
4444
#[automatically_derived]
45-
impl #impl_generics ::core::ops::#trait_ident for #input_type #ty_generics #where_clause {
45+
impl #impl_generics ::derive_more::#trait_ident for #input_type #ty_generics #where_clause {
4646
type Output = #output_type;
4747

4848
#[inline]

impl/src/as_mut.rs

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1010
let state = State::with_type_bound(
1111
input,
1212
trait_name,
13-
quote! { ::core::convert },
1413
"as_mut".into(),
1514
AttrParams::ignore_and_forward(),
1615
false,

impl/src/as_ref.rs

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1010
let state = State::with_type_bound(
1111
input,
1212
trait_name,
13-
quote! { ::core::convert },
1413
"as_ref".into(),
1514
AttrParams::ignore_and_forward(),
1615
false,

impl/src/deref.rs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
88
let state = State::with_field_ignore_and_forward(
99
input,
1010
trait_name,
11-
quote! { ::core::ops },
1211
trait_name.to_lowercase(),
1312
)?;
1413
let SingleFieldData {

impl/src/deref_mut.rs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
88
let state = State::with_field_ignore_and_forward(
99
input,
1010
trait_name,
11-
quote! { ::core::ops },
1211
"deref_mut".into(),
1312
)?;
1413
let SingleFieldData {

impl/src/error.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ pub fn expand(
1818
let state = State::with_attr_params(
1919
input,
2020
trait_name,
21-
quote! { ::derive_more::__private::Error },
2221
trait_name.to_lowercase(),
2322
allowed_attr_params(),
2423
)?;
@@ -39,7 +38,7 @@ pub fn expand(
3938

4039
let source = source.map(|source| {
4140
quote! {
42-
fn source(&self) -> Option<&(dyn ::derive_more::__private::Error + 'static)> {
41+
fn source(&self) -> Option<&(dyn ::derive_more::Error + 'static)> {
4342
use ::derive_more::__private::AsDynError;
4443
#source
4544
}
@@ -73,7 +72,7 @@ pub fn expand(
7372
&generics,
7473
quote! {
7574
where
76-
#(#bounds: ::core::fmt::Debug + ::core::fmt::Display + ::derive_more::__private::Error + 'static),*
75+
#(#bounds: ::core::fmt::Debug + ::core::fmt::Display + ::derive_more::Error + 'static),*
7776
},
7877
);
7978
}
@@ -82,7 +81,7 @@ pub fn expand(
8281

8382
let render = quote! {
8483
#[automatically_derived]
85-
impl #impl_generics ::derive_more::__private::Error for #ident #ty_generics #where_clause {
84+
impl #impl_generics ::derive_more::Error for #ident #ty_generics #where_clause {
8685
#source
8786
#provide
8887
}
@@ -120,7 +119,6 @@ fn render_enum(
120119
let state = State::from_variant(
121120
state.input,
122121
state.trait_name,
123-
state.trait_module.clone(),
124122
state.trait_attr.clone(),
125123
allowed_attr_params(),
126124
variant,
@@ -207,7 +205,7 @@ impl<'input, 'state> ParsedFields<'input, 'state> {
207205
let source_provider = self.source.map(|source| {
208206
let source_expr = &self.data.members[source];
209207
quote! {
210-
::derive_more::__private::Error::provide(&#source_expr, demand);
208+
::derive_more::Error::provide(&#source_expr, demand);
211209
}
212210
});
213211
let backtrace_provider = self
@@ -237,7 +235,7 @@ impl<'input, 'state> ParsedFields<'input, 'state> {
237235
let pattern = self.data.matcher(&[source], &[quote! { source }]);
238236
Some(quote! {
239237
#pattern => {
240-
::derive_more::__private::Error::provide(source, demand);
238+
::derive_more::Error::provide(source, demand);
241239
}
242240
})
243241
}
@@ -249,7 +247,7 @@ impl<'input, 'state> ParsedFields<'input, 'state> {
249247
Some(quote! {
250248
#pattern => {
251249
demand.provide_ref::<::std::backtrace::Backtrace>(backtrace);
252-
::derive_more::__private::Error::provide(source, demand);
250+
::derive_more::Error::provide(source, demand);
253251
}
254252
})
255253
}

impl/src/from_str.rs

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
99
let state = State::new(
1010
input,
1111
trait_name,
12-
quote! { ::core::str },
1312
trait_name.to_lowercase(),
1413
)?;
1514

impl/src/index.rs

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
99
let mut state = State::with_field_ignore(
1010
input,
1111
trait_name,
12-
quote! { ::core::ops },
1312
trait_name.to_lowercase(),
1413
)?;
1514
state.add_trait_path_type_param(quote! { #index_type });

impl/src/index_mut.rs

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
99
let mut state = State::with_field_ignore(
1010
input,
1111
trait_name,
12-
quote! { ::core::ops },
1312
"index_mut".into(),
1413
)?;
1514
state.add_trait_path_type_param(quote! { #index_type });

impl/src/into_iterator.rs

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1010
let state = State::with_field_ignore_and_refs(
1111
input,
1212
trait_name,
13-
quote! { ::core::iter },
1413
"into_iterator".into(),
1514
)?;
1615
let SingleFieldData {

impl/src/is_variant.rs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
88
let state = State::with_attr_params(
99
input,
1010
trait_name,
11-
quote! {},
1211
"is_variant".into(),
1312
AttrParams {
1413
enum_: vec!["ignore"],

impl/src/mul_assign_like.rs

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1616
let mut state = State::with_attr_params(
1717
input,
1818
trait_name,
19-
quote! { ::core::ops },
2019
method_name,
2120
AttrParams::struct_(vec!["forward"]),
2221
)?;

impl/src/mul_like.rs

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1010
let mut state = State::with_attr_params(
1111
input,
1212
trait_name,
13-
quote! { ::core::ops },
1413
trait_name.to_lowercase(),
1514
AttrParams::struct_(vec!["forward"]),
1615
)?;

impl/src/sum_like.rs

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
99
let state = State::new(
1010
input,
1111
trait_name,
12-
quote! { ::core::iter },
1312
trait_name.to_lowercase(),
1413
)?;
1514
let multi_field_data = state.enabled_fields_data();

impl/src/try_into.rs

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
1414
let state = State::with_attr_params(
1515
input,
1616
trait_name,
17-
quote! { ::core::convert },
1817
"try_into".into(),
1918
AttrParams {
2019
enum_: vec!["ignore", "owned", "ref", "ref_mut"],

impl/src/try_unwrap.rs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
88
let state = State::with_attr_params(
99
input,
1010
trait_name,
11-
quote! {},
1211
"try_unwrap".into(),
1312
AttrParams {
1413
enum_: vec!["ignore", "owned", "ref", "ref_mut"],

impl/src/unwrap.rs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub fn expand(input: &DeriveInput, trait_name: &'static str) -> Result<TokenStre
88
let state = State::with_attr_params(
99
input,
1010
trait_name,
11-
quote! {},
1211
"unwrap".into(),
1312
AttrParams {
1413
enum_: vec!["ignore", "owned", "ref", "ref_mut"],

impl/src/utils.rs

+2-20
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,6 @@ pub struct State<'input> {
265265
pub trait_name: &'static str,
266266
pub trait_ident: Ident,
267267
pub method_ident: Ident,
268-
pub trait_module: TokenStream,
269268
pub trait_path: TokenStream,
270269
pub trait_path_params: Vec<TokenStream>,
271270
pub trait_attr: String,
@@ -314,13 +313,11 @@ impl<'input> State<'input> {
314313
pub fn new<'arg_input>(
315314
input: &'arg_input DeriveInput,
316315
trait_name: &'static str,
317-
trait_module: TokenStream,
318316
trait_attr: String,
319317
) -> Result<State<'arg_input>> {
320318
State::new_impl(
321319
input,
322320
trait_name,
323-
trait_module,
324321
trait_attr,
325322
AttrParams::default(),
326323
true,
@@ -330,13 +327,11 @@ impl<'input> State<'input> {
330327
pub fn with_field_ignore<'arg_input>(
331328
input: &'arg_input DeriveInput,
332329
trait_name: &'static str,
333-
trait_module: TokenStream,
334330
trait_attr: String,
335331
) -> Result<State<'arg_input>> {
336332
State::new_impl(
337333
input,
338334
trait_name,
339-
trait_module,
340335
trait_attr,
341336
AttrParams::new(vec!["ignore"]),
342337
true,
@@ -346,13 +341,11 @@ impl<'input> State<'input> {
346341
pub fn with_field_ignore_and_forward<'arg_input>(
347342
input: &'arg_input DeriveInput,
348343
trait_name: &'static str,
349-
trait_module: TokenStream,
350344
trait_attr: String,
351345
) -> Result<State<'arg_input>> {
352346
State::new_impl(
353347
input,
354348
trait_name,
355-
trait_module,
356349
trait_attr,
357350
AttrParams::new(vec!["ignore", "forward"]),
358351
true,
@@ -362,13 +355,11 @@ impl<'input> State<'input> {
362355
pub fn with_field_ignore_and_refs<'arg_input>(
363356
input: &'arg_input DeriveInput,
364357
trait_name: &'static str,
365-
trait_module: TokenStream,
366358
trait_attr: String,
367359
) -> Result<State<'arg_input>> {
368360
State::new_impl(
369361
input,
370362
trait_name,
371-
trait_module,
372363
trait_attr,
373364
AttrParams::new(vec!["ignore", "owned", "ref", "ref_mut"]),
374365
true,
@@ -378,14 +369,12 @@ impl<'input> State<'input> {
378369
pub fn with_attr_params<'arg_input>(
379370
input: &'arg_input DeriveInput,
380371
trait_name: &'static str,
381-
trait_module: TokenStream,
382372
trait_attr: String,
383373
allowed_attr_params: AttrParams,
384374
) -> Result<State<'arg_input>> {
385375
State::new_impl(
386376
input,
387377
trait_name,
388-
trait_module,
389378
trait_attr,
390379
allowed_attr_params,
391380
true,
@@ -395,15 +384,13 @@ impl<'input> State<'input> {
395384
pub fn with_type_bound<'arg_input>(
396385
input: &'arg_input DeriveInput,
397386
trait_name: &'static str,
398-
trait_module: TokenStream,
399387
trait_attr: String,
400388
allowed_attr_params: AttrParams,
401389
add_type_bound: bool,
402390
) -> Result<State<'arg_input>> {
403391
Self::new_impl(
404392
input,
405393
trait_name,
406-
trait_module,
407394
trait_attr,
408395
allowed_attr_params,
409396
add_type_bound,
@@ -413,15 +400,14 @@ impl<'input> State<'input> {
413400
fn new_impl<'arg_input>(
414401
input: &'arg_input DeriveInput,
415402
trait_name: &'static str,
416-
trait_module: TokenStream,
417403
trait_attr: String,
418404
allowed_attr_params: AttrParams,
419405
add_type_bound: bool,
420406
) -> Result<State<'arg_input>> {
421407
let trait_name = trait_name.trim_end_matches("ToInner");
422408
let trait_ident = format_ident!("{trait_name}");
423409
let method_ident = format_ident!("{trait_attr}");
424-
let trait_path = quote! { #trait_module::#trait_ident };
410+
let trait_path = quote! { ::derive_more::#trait_ident };
425411
let (derive_type, fields, variants): (_, Vec<_>, Vec<_>) = match input.data {
426412
Data::Struct(ref data_struct) => match data_struct.fields {
427413
Fields::Unnamed(ref fields) => {
@@ -516,7 +502,6 @@ impl<'input> State<'input> {
516502
State::from_variant(
517503
input,
518504
trait_name,
519-
trait_module.clone(),
520505
trait_attr.clone(),
521506
allowed_attr_params.clone(),
522507
variant,
@@ -539,7 +524,6 @@ impl<'input> State<'input> {
539524
trait_name,
540525
trait_ident,
541526
method_ident,
542-
trait_module,
543527
trait_path,
544528
trait_path_params: vec![],
545529
trait_attr,
@@ -558,7 +542,6 @@ impl<'input> State<'input> {
558542
pub fn from_variant<'arg_input>(
559543
input: &'arg_input DeriveInput,
560544
trait_name: &'static str,
561-
trait_module: TokenStream,
562545
trait_attr: String,
563546
allowed_attr_params: AttrParams,
564547
variant: &'arg_input Variant,
@@ -567,7 +550,7 @@ impl<'input> State<'input> {
567550
let trait_name = trait_name.trim_end_matches("ToInner");
568551
let trait_ident = format_ident!("{trait_name}");
569552
let method_ident = format_ident!("{trait_attr}");
570-
let trait_path = quote! { #trait_module::#trait_ident };
553+
let trait_path = quote! { ::derive_more::#trait_ident };
571554
let (derive_type, fields): (_, Vec<_>) = match variant.fields {
572555
Fields::Unnamed(ref fields) => {
573556
(DeriveType::Unnamed, unnamed_to_vec(fields))
@@ -593,7 +576,6 @@ impl<'input> State<'input> {
593576
Ok(State {
594577
input,
595578
trait_name,
596-
trait_module,
597579
trait_path,
598580
trait_path_params: vec![],
599581
trait_attr,

src/fmt.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//! [`core::fmt::DebugTuple`] reimplementation with
22
//! [`DebugTuple::finish_non_exhaustive()`] method.
33
4+
use ::core;
5+
use core::prelude::v1::*;
46
use core::fmt::{Debug, Formatter, Result, Write};
57

68
/// Same as [`core::fmt::DebugTuple`], but with

0 commit comments

Comments
 (0)