Skip to content

Commit 51a37b9

Browse files
committed
Code changes for migrating to attribute_macro
1 parent 74dbe2c commit 51a37b9

34 files changed

+142
-213
lines changed

README.md

+1-13
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ statements, with the only caveat that it requires to derive `DeriveWhere`
1616
([#27]):
1717

1818
```rust
19-
#[derive(DeriveWhere)]
2019
#[derive_where(Clone, Debug)]
2120
struct Example<T>(PhantomData<T>);
2221
```
@@ -34,7 +33,6 @@ specified. This example will restrict the implementation for `Example` to
3433
`T: Clone`:
3534

3635
```rust
37-
#[derive(DeriveWhere)]
3836
#[derive_where(Clone; T)]
3937
struct Example<T, U>(T, PhantomData<U>);
4038
```
@@ -45,7 +43,6 @@ bind implementation for `Example` to `T: Super`:
4543
```rust
4644
trait Super: Clone {}
4745

48-
#[derive(DeriveWhere)]
4946
#[derive_where(Clone; T: Super)]
5047
struct Example<T>(PhantomData<T>);
5148
```
@@ -65,7 +62,6 @@ impl Trait for Impl {
6562
type Type = i32;
6663
}
6764

68-
#[derive(DeriveWhere)]
6965
#[derive_where(Clone; T::Type)]
7066
struct Example<T: Trait>(T::Type);
7167
```
@@ -75,7 +71,6 @@ specific constrain. It is also possible to use multiple separate
7571
constrain specifications when required:
7672

7773
```rust
78-
#[derive(DeriveWhere)]
7974
#[derive_where(Clone; T)]
8075
#[derive_where(Debug; U)]
8176
struct Example<T, U>(PhantomData<T>, PhantomData<U>);
@@ -87,7 +82,6 @@ Deriving [`Default`] on an enum is not possible in Rust at the moment.
8782
Derive-where allows this with a `default` attribute:
8883

8984
```rust
90-
#[derive(DeriveWhere)]
9185
#[derive_where(Default)]
9286
enum Example<T> {
9387
#[derive_where(default)]
@@ -102,7 +96,6 @@ that allow it, which are: [`Debug`], [`Hash`], [`Ord`](https://doc.rust-lang.org
10296
[`PartialEq`](https://doc.rust-lang.org/core/cmp/trait.PartialEq.html), [`Zeroize`] and [`ZeroizeOnDrop`].
10397

10498
```rust
105-
#[derive(DeriveWhere)]
10699
#[derive_where(Debug, PartialEq; T)]
107100
struct Example<T>(#[derive_where(skip)] T);
108101

@@ -113,14 +106,12 @@ assert_eq!(Example(42), Example(0));
113106
It is also possible to skip all fields in an item or variant if desired:
114107

115108
```rust
116-
#[derive(DeriveWhere)]
117109
#[derive_where(Debug)]
118110
#[derive_where(skip_inner)]
119111
struct StructExample<T>(T);
120112

121113
assert_eq!(format!("{:?}", StructExample(42)), "StructExample");
122114

123-
#[derive(DeriveWhere)]
124115
#[derive_where(Debug)]
125116
enum EnumExample<T> {
126117
#[derive_where(skip_inner)]
@@ -134,7 +125,6 @@ Selective skipping of fields for certain traits is also an option, both in
134125
`skip` and `skip_inner`:
135126

136127
```rust
137-
#[derive(DeriveWhere)]
138128
#[derive_where(Debug, PartialEq)]
139129
#[derive_where(skip_inner(Debug))]
140130
struct Example<T>(i32, PhantomData<T>);
@@ -156,7 +146,6 @@ assert_ne!(
156146
This is to avoid ambiguity between another method also called `zeroize`.
157147

158148
```rust
159-
#[derive(DeriveWhere)]
160149
#[derive_where(Zeroize(crate = "zeroize_"))]
161150
struct Example(#[derive_where(Zeroize(fqs))] i32);
162151

@@ -189,8 +178,7 @@ and can be implemented without [`Zeroize`], otherwise it only implements
189178
- `crate`: an item-level option which specifies a path to the `zeroize`
190179
crate in case of a re-export or rename.
191180

192-
```
193-
#[derive(DeriveWhere)]
181+
```rust
194182
#[derive_where(ZeroizeOnDrop(crate = "zeroize_"))]
195183
struct Example(i32);
196184

ensure-no-std/src/lib.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ extern crate zeroize_ as zeroize;
55

66
use core::marker::PhantomData;
77

8-
use derive_where::DeriveWhere;
8+
use derive_where::derive_where;
99

10-
#[derive(DeriveWhere)]
1110
#[derive_where(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
1211
#[cfg_attr(feature = "zeroize", derive_where(Zeroize))]
1312
pub struct Test<T>(PhantomData<T>);

non-msrv-tests/tests/ui/default.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
#[derive_where(Debug)]
76
struct DefaultOnStruct<T>(#[derive_where(default)] PhantomData<T>);
87

9-
#[derive(DeriveWhere)]
108
#[derive_where(Clone)]
119
enum DefaultWithoutTrait<T> {
1210
#[derive_where(default)]
1311
A(PhantomData<T>),
1412
}
1513

16-
#[derive(DeriveWhere)]
1714
#[derive_where(Default)]
1815
enum MissingDefault<T> {
1916
A(PhantomData<T>),
2017
}
2118

22-
#[derive(DeriveWhere)]
2319
#[derive_where(Default)]
2420
enum DuplicateDefaultSeparate<T> {
2521
#[derive_where(default)]
@@ -28,14 +24,12 @@ enum DuplicateDefaultSeparate<T> {
2824
B(PhantomData<T>),
2925
}
3026

31-
#[derive(DeriveWhere)]
3227
#[derive_where(Default)]
3328
enum DuplicateDefaultSame<T> {
3429
#[derive_where(default, default)]
3530
A(PhantomData<T>),
3631
}
3732

38-
#[derive(DeriveWhere)]
3933
#[derive_where(Default)]
4034
enum DuplicateDefaultSameSeparate<T> {
4135
#[derive_where(default)]

non-msrv-tests/tests/ui/item.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
struct NoAttribute<T>(PhantomData<T>);
76

8-
#[derive(DeriveWhere)]
97
#[derive_where]
108
struct NoOption<T>(PhantomData<T>);
119

12-
#[derive(DeriveWhere)]
1310
#[derive_where()]
1411
struct EmptyAttribute<T>(PhantomData<T>);
1512

16-
#[derive(DeriveWhere)]
1713
#[derive_where(Clone; T;)]
1814
struct SemiColonAtTheEnd<T, U>(T, PhantomData<U>);
1915

20-
#[derive(DeriveWhere)]
2116
#[derive_where(Clone; T,,)]
2217
struct DoubleColonAtTheEnd<T, U>(T, PhantomData<U>);
2318

@@ -33,7 +28,6 @@ struct MissingCommaBetweenTraits<T>(PhantomData<T>);
3328
#[derive_where(Clone; T U)]
3429
struct MissingCommaBetweenGenerics<T, U, V>(T, PhantomData<(U, V)>);
3530

36-
#[derive(DeriveWhere)]
3731
#[derive_where("Clone")]
3832
struct InvalidTrait<T>(PhantomData<T>);
3933

non-msrv-tests/tests/ui/item_option_syntax.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
// Rust itself already fails to parse this and will provide a separate error message.
76
#[derive_where = invalid]
87
struct InvalidAttribute<T>(PhantomData<T>);
98

10-
#[derive(DeriveWhere)]
119
#[derive_where = "invalid"]
1210
struct WrongAttributeSyntax<T>(PhantomData<T>);
1311

14-
#[derive(DeriveWhere)]
1512
#[derive_where()]
1613
struct EmptyAttribute<T>(PhantomData<T>);
1714

18-
#[derive(DeriveWhere)]
1915
#[derive_where(Debug = "option")]
2016
struct WrongOptionSyntax<T>(PhantomData<T>);
2117

22-
#[derive(DeriveWhere)]
2318
#[derive_where(Debug())]
2419
struct EmptyOption<T>(PhantomData<T>);
2520

non-msrv-tests/tests/ui/item_skip.rs

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,49 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
#[derive_where(Debug)]
76
#[derive_where(skip_inner)]
87
enum SkipInnerOnEnum<T> {
98
A(PhantomData<T>),
109
}
1110

12-
#[derive(DeriveWhere)]
1311
#[derive_where(Debug)]
1412
#[derive_where(skip_inner)]
1513
#[derive_where(skip_inner)]
1614
struct DuplicateSkipInner<T>(PhantomData<T>);
1715

18-
#[derive(DeriveWhere)]
1916
#[derive_where(Debug)]
2017
#[derive_where(skip_inner())]
2118
struct EmptySkipInner<T>(PhantomData<T>);
2219

23-
#[derive(DeriveWhere)]
2420
#[derive_where(Debug)]
2521
#[derive_where(skip_inner)]
2622
#[derive_where(skip_inner(Debug))]
2723
struct OverridingSkipInner<T>(PhantomData<T>);
2824

29-
#[derive(DeriveWhere)]
3025
#[derive_where(Debug)]
3126
#[derive_where(skip_inner(Debug))]
3227
#[derive_where(skip_inner)]
3328
struct UnderridingSkipInner<T>(PhantomData<T>);
3429

35-
#[derive(DeriveWhere)]
3630
#[derive_where(Clone; T)]
3731
#[derive_where(skip_inner)]
3832
struct NoSupportedTrait<T>(PhantomData<T>);
3933

40-
#[derive(DeriveWhere)]
4134
#[derive_where(Clone; T)]
4235
#[derive_where(skip_inner(Clone))]
4336
struct UnsupportedTrait<T>(PhantomData<T>);
4437

45-
#[derive(DeriveWhere)]
4638
#[derive_where(Debug)]
4739
#[derive_where(skip_inner(Debug, Debug))]
4840
struct DuplicateTraitSame<T>(PhantomData<T>);
4941

50-
#[derive(DeriveWhere)]
5142
#[derive_where(Debug)]
5243
#[derive_where(skip_inner(Debug))]
5344
#[derive_where(skip_inner(Debug))]
5445
struct DuplicateTraitSeparate<T>(PhantomData<T>);
5546

56-
#[derive(DeriveWhere)]
5747
#[derive_where(Clone; T)]
5848
#[derive_where(skip_inner(Debug))]
5949
struct MissingDeriveTrait<T>(PhantomData<T>);

non-msrv-tests/tests/ui/not-zeroize/item.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
#[derive_where(skip_inner, Clone)]
76
struct SkipInnerWithTrait<T>(PhantomData<T>);
87

9-
#[derive(DeriveWhere)]
108
#[derive_where(Debug = invalid; T)]
119
struct WrongOptionSyntax<T, U>(T, PhantomData<U>);
1210

13-
#[derive(DeriveWhere)]
1411
#[derive_where(,)]
1512
struct OnlyComma<T>(PhantomData<T>);
1613

17-
#[derive(DeriveWhere)]
1814
#[derive_where(,Clone)]
1915
struct StartWithComma<T>(PhantomData<T>);
2016

21-
#[derive(DeriveWhere)]
2217
#[derive_where(Clone,,)]
2318
struct DuplicateCommaAtEnd<T>(PhantomData<T>);
2419

25-
#[derive(DeriveWhere)]
2620
#[derive_where(T)]
2721
struct GenericInsteadTrait<T, U>(T, PhantomData<U>);
2822

non-msrv-tests/tests/ui/option.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,29 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
#[derive_where(Default)]
76
struct StructNoOption<T>(#[derive_where] PhantomData<T>);
87

98
#[derive(derive_where::DeriveWhere)]
109
#[derive_where(Default)]
1110
struct StructWrongSyntax<T>(#[derive_where = "default"] PhantomData<T>);
1211

13-
#[derive(DeriveWhere)]
1412
#[derive_where(Default)]
1513
enum EnumNoOption<T> {
1614
#[derive_where]
1715
A(PhantomData<T>),
1816
}
1917

20-
#[derive(DeriveWhere)]
2118
#[derive_where(Default)]
2219
enum EnumWrongSyntax<T> {
2320
#[derive_where = "default"]
2421
A(PhantomData<T>),
2522
}
2623

27-
#[derive(DeriveWhere)]
2824
#[derive_where(Clone)]
2925
struct StructInvalidOption<T>(#[derive_where(option)] PhantomData<T>);
3026

31-
#[derive(DeriveWhere)]
3227
#[derive_where(Clone)]
3328
enum EnumInvalidOption<T> {
3429
#[derive_where(option)]

non-msrv-tests/tests/ui/skip.rs

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,50 @@
11
use std::marker::PhantomData;
22

3-
use derive_where::DeriveWhere;
3+
use derive_where::derive_where;
44

5-
#[derive(DeriveWhere)]
65
#[derive_where(Debug)]
76
struct DuplicateSkipSame<T>(#[derive_where(skip, skip)] PhantomData<T>);
87

9-
#[derive(DeriveWhere)]
108
#[derive_where(Debug)]
119
struct DuplicateSkipSeparate<T>(
1210
#[derive_where(skip)]
1311
#[derive_where(skip)]
1412
PhantomData<T>,
1513
);
1614

17-
#[derive(DeriveWhere)]
1815
#[derive_where(Debug)]
1916
struct EmptySkip<T>(#[derive_where(skip())] PhantomData<T>);
2017

21-
#[derive(DeriveWhere)]
2218
#[derive_where(Debug)]
2319
struct OverridingSkip<T>(
2420
#[derive_where(skip)]
2521
#[derive_where(skip(Debug))]
2622
PhantomData<T>,
2723
);
2824

29-
#[derive(DeriveWhere)]
3025
#[derive_where(Debug)]
3126
struct UnderridingSkip<T>(
3227
#[derive_where(skip(Debug))]
3328
#[derive_where(skip)]
3429
PhantomData<T>,
3530
);
3631

37-
#[derive(DeriveWhere)]
3832
#[derive_where(Clone; T)]
3933
struct NoSupportedTrait<T>(#[derive_where(skip)] PhantomData<T>);
4034

41-
#[derive(DeriveWhere)]
4235
#[derive_where(Clone; T)]
4336
struct UnsupportedTrait<T>(#[derive_where(skip(Clone))] PhantomData<T>);
4437

45-
#[derive(DeriveWhere)]
4638
#[derive_where(Debug)]
4739
struct DuplicateTraitSame<T>(#[derive_where(skip(Debug, Debug))] PhantomData<T>);
4840

49-
#[derive(DeriveWhere)]
5041
#[derive_where(Debug)]
5142
struct DuplicateTraitSeparate<T>(
5243
#[derive_where(skip(Debug))]
5344
#[derive_where(skip(Debug))]
5445
PhantomData<T>,
5546
);
5647

57-
#[derive(DeriveWhere)]
5848
#[derive_where(Clone; T)]
5949
struct MissingDeriveTrait<T>(#[derive_where(skip(Debug))] PhantomData<T>);
6050

0 commit comments

Comments
 (0)