• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5This project adheres to [Semantic Versioning](https://semver.org).
6
7<!--
8Note: In this file, do not use the hard wrap in the middle of a sentence for compatibility with GitHub comment style markdown rendering.
9-->
10
11## [Unreleased]
12
13## [1.0.6] - 2021-03-25
14
15- [Suppress `clippy::semicolon_if_nothing_returned` lint in generated code.](https://github.com/taiki-e/pin-project/pull/318)
16
17## [1.0.5] - 2021-02-03
18
19- [Suppress `deprecated` lint in generated code.](https://github.com/taiki-e/pin-project/pull/313)
20
21## [1.0.4] - 2021-01-09
22
23- [Suppress `clippy::ref_option_ref` lint in generated code.](https://github.com/taiki-e/pin-project/pull/308)
24
25## [1.0.3] - 2021-01-05
26
27- Exclude unneeded files from crates.io.
28
29## [1.0.2] - 2020-11-18
30
31- [Suppress `clippy::unknown_clippy_lints` lint in generated code.](https://github.com/taiki-e/pin-project/pull/303)
32
33## [1.0.1] - 2020-10-15
34
35- [Fix warnings when `#[pin_project]` attribute used within `macro_rules!` macros.](https://github.com/taiki-e/pin-project/pull/298)
36
37## [1.0.0] - 2020-10-13
38
39- [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](https://github.com/taiki-e/pin-project/pull/265)
40
41  Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead:
42
43  ```diff
44  - #[pin_project]
45  + #[pin_project(project = EnumProj)]
46    enum Enum<T> {
47        Variant(#[pin] T),
48    }
49
50  - #[project]
51    fn func<T>(x: Pin<&mut Enum<T>>) {
52  -     #[project]
53        match x.project() {
54  -         Enum::Variant(_) => { /* ... */ }
55  +         EnumProj::Variant(_) => { /* ... */ }
56        }
57    }
58  ```
59
60- [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](https://github.com/taiki-e/pin-project/pull/266) Use `project_replace` argument instead.
61
62- [Optimize code generation when used on enums.](https://github.com/taiki-e/pin-project/pull/270)
63
64- [Raise the minimum supported Rust version of this crate from Rust 1.34 to Rust 1.37.](https://github.com/taiki-e/pin-project/pull/292)
65
66- Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, `clippy::implicit_return`, and `clippy::redundant_pub_crate` lints in generated code. ([#276](https://github.com/taiki-e/pin-project/pull/276), [#277](https://github.com/taiki-e/pin-project/pull/277), [#284](https://github.com/taiki-e/pin-project/pull/284))
67
68- Diagnostic improvements.
69
70Changes since the 1.0.0-alpha.1 release:
71
72- [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-project/pull/287)
73
74- Update minimal version of `syn` to 1.0.44
75
76## [1.0.0-alpha.1] - 2020-09-22
77
78- [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](https://github.com/taiki-e/pin-project/pull/265)
79
80  Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead:
81
82  ```diff
83  - #[pin_project]
84  + #[pin_project(project = EnumProj)]
85    enum Enum<T> {
86        Variant(#[pin] T),
87    }
88
89  - #[project]
90    fn func<T>(x: Pin<&mut Enum<T>>) {
91  -     #[project]
92        match x.project() {
93  -         Enum::Variant(_) => { /* ... */ }
94  +         EnumProj::Variant(_) => { /* ... */ }
95        }
96    }
97  ```
98
99- [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](https://github.com/taiki-e/pin-project/pull/266) Use `project_replace` argument instead.
100
101- [Optimize code generation when used on enums.](https://github.com/taiki-e/pin-project/pull/270)
102
103- Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, and `clippy::implicit_return` lints in generated code. ([#276](https://github.com/taiki-e/pin-project/pull/276), [#277](https://github.com/taiki-e/pin-project/pull/277))
104
105- Diagnostic improvements.
106
107See also [tracking issue for 1.0 release](https://github.com/taiki-e/pin-project/issues/264).
108
109## [0.4.27] - 2020-10-11
110
111- Update minimal version of `syn` to 1.0.44
112
113## [0.4.26] - 2020-10-04
114
115- [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-project/pull/287)
116
117## [0.4.25] - 2020-10-01
118
119- [Suppress `drop_bounds` lint, which will be added to rustc in the future.](https://github.com/taiki-e/pin-project/pull/273) See [#272](https://github.com/taiki-e/pin-project/issues/272) for more details.
120
121  (Note: 1.0.0-alpha.1 already contains this change.)
122
123## [0.4.24] - 2020-09-26
124
125- [Fix compatibility of generated code with `forbid(future_incompatible)`.](https://github.com/taiki-e/pin-project/pull/282)
126
127  Note: This does not guarantee compatibility with `forbid(future_incompatible)` in the future.
128  If rustc adds a new lint, we may not be able to keep this.
129
130## [0.4.23] - 2020-07-27
131
132- [Fix compile error with `?Sized` type parameters.](https://github.com/taiki-e/pin-project/pull/263)
133
134## [0.4.22] - 2020-06-14
135
136- Documentation improvements.
137
138## [0.4.21] - 2020-06-13
139
140- [Deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes due to some unfixable limitations.](https://github.com/taiki-e/pin-project/pull/244)
141
142  Consider naming the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead.
143
144  ```rust
145  #[pin_project(project = EnumProj)]
146  enum Enum<T> {
147      Variant(#[pin] T),
148  }
149
150  fn func<T>(x: Pin<&mut Enum<T>>) {
151      match x.project() {
152          EnumProj::Variant(y) => {
153              let _: Pin<&mut T> = y;
154          }
155      }
156  }
157  ```
158
159  See [#225](https://github.com/taiki-e/pin-project/pull/225) for more details.
160
161- [Support `Self` in fields and generics in type definitions.](https://github.com/taiki-e/pin-project/pull/245)
162
163- [Fix errors involving *"`self` value is a keyword only available in methods with `self` parameter"* in apparently correct code.](https://github.com/taiki-e/pin-project/pull/250)
164
165- Diagnostic improvements.
166
167## [0.4.20] - 2020-06-07
168
169- [You can now use `project_replace` argument without Replace argument.](https://github.com/taiki-e/pin-project/pull/243)
170  This used to require you to specify both.
171
172  ```diff
173  - #[pin_project(Replace, project_replace = EnumProjOwn)]
174  + #[pin_project(project_replace = EnumProjOwn)]
175    enum Enum<T> {
176        Variant(#[pin] T)
177    }
178  ```
179
180- [Makes `project_replace` argument an alias for `Replace` argument so that it can be used without a value.](https://github.com/taiki-e/pin-project/pull/243)
181
182  ```rust
183  #[pin_project(project_replace)]
184  enum Enum<T> {
185      Variant(#[pin] T)
186  }
187  ```
188
189  *The `Replace` argument will be deprecated in the future.*
190
191- [Suppress `unreachable_pub` lint in generated code.](https://github.com/taiki-e/pin-project/pull/240)
192
193## [0.4.19] - 2020-06-04
194
195- [Suppress `unused_results` lint in generated code.](https://github.com/taiki-e/pin-project/pull/239)
196
197## [0.4.18] - 2020-06-04
198
199- [Support `Self` in more syntax positions inside `#[pinned_drop]` impl.](https://github.com/taiki-e/pin-project/pull/230)
200
201- [Suppress `clippy::type_repetition_in_bounds` and `clippy::used_underscore_binding` lints in generated code.](https://github.com/taiki-e/pin-project/pull/233)
202
203- Documentation improvements.
204
205- Diagnostic improvements.
206
207## [0.4.17] - 2020-05-18
208
209- [Support naming the projection types.](https://github.com/taiki-e/pin-project/pull/202)
210
211  By passing an argument with the same name as the method to the attribute, you can name the projection type returned from the method:
212
213  ```rust
214  #[pin_project(project = EnumProj)]
215  enum Enum<T> {
216      Variant(#[pin] T),
217  }
218
219  fn func<T>(x: Pin<&mut Enum<T>>) {
220      match x.project() {
221          EnumProj::Variant(y) => {
222              let _: Pin<&mut T> = y;
223          }
224      }
225  }
226  ```
227
228## [0.4.16] - 2020-05-11
229
230- [Fixed an issue that users can call internal function generated by `#[pinned_drop]`.](https://github.com/taiki-e/pin-project/pull/223)
231
232## [0.4.15] - 2020-05-10
233
234- [`#[project]` attribute can now handle all `project*` attributes in that scope with one wrapper attribute.](https://github.com/taiki-e/pin-project/pull/220)
235
236## [0.4.14] - 2020-05-09
237
238- [Added `!Unpin` option to `#[pin_project]` attribute for guarantee the type is `!Unpin`.](https://github.com/taiki-e/pin-project/pull/219)
239
240  ```rust
241  #[pin_project(!Unpin)]
242  struct Struct<T, U> {
243      field: T,
244  }
245  ```
246
247  This is equivalent to use `#[pin]` attribute for `PhantomPinned` field.
248
249  ```rust
250  #[pin_project]
251  struct Struct<T, U> {
252      field: T,
253      #[pin] // Note that using `PhantomPinned` without `#[pin]` attribute has no effect.
254      _pin: PhantomPinned,
255  }
256  ```
257
258  *[Note: This raises the minimum supported Rust version of this crate from Rust 1.33 to Rust 1.34.](https://github.com/taiki-e/pin-project/pull/219#pullrequestreview-408644187)*
259
260- [Fixed an issue where duplicate `#[project]` attributes were ignored.](https://github.com/taiki-e/pin-project/pull/218)
261
262- [Suppress `single_use_lifetimes` lint in generated code.](https://github.com/taiki-e/pin-project/pull/217)
263
264- [Support overlapping lifetime names in HRTB.](https://github.com/taiki-e/pin-project/pull/217)
265
266- [Hide generated items from --document-private-items.](https://github.com/taiki-e/pin-project/pull/211) See [#211](https://github.com/taiki-e/pin-project/pull/211) for details.
267
268- Documentation improvements.
269
270## [0.4.13] - 2020-05-07
271
272- [Fixed a regression in 0.4.11.](https://github.com/taiki-e/pin-project/pull/207)
273
274  Changes from [0.4.10](https://github.com/taiki-e/pin-project/releases/tag/v0.4.10) and [0.4.12](https://github.com/taiki-e/pin-project/releases/tag/v0.4.12):
275
276  - [Fixed an issue that `#[project]` on non-statement expression does not work without unstable features.](https://github.com/taiki-e/pin-project/pull/197)
277
278  - [Support overwriting the name of core crate.](https://github.com/taiki-e/pin-project/pull/199)
279
280  - [Suppress `clippy::needless_pass_by_value` lint in generated code of `#[pinned_drop]`.](https://github.com/taiki-e/pin-project/pull/200)
281
282  - Documentation improvements.
283
284  - Diagnostic improvements.
285
286## [0.4.12] - 2020-05-07
287
288- A release to avoid [a regression in 0.4.11](https://github.com/taiki-e/pin-project/issues/206). No code changes from [0.4.10](https://github.com/taiki-e/pin-project/releases/tag/v0.4.10).
289
290## [0.4.11] - 2020-05-07
291
292**Note: This release has been yanked.** See [#206](https://github.com/taiki-e/pin-project/issues/206) for details.
293
294- [Fixed an issue that `#[project]` on non-statement expression does not work without unstable features.](https://github.com/taiki-e/pin-project/pull/197)
295
296- [Support overwriting the name of core crate.](https://github.com/taiki-e/pin-project/pull/199)
297
298- [Suppress `clippy::needless_pass_by_value` lint in generated code of `#[pinned_drop]`.](https://github.com/taiki-e/pin-project/pull/200)
299
300- Documentation improvements.
301
302- Diagnostic improvements.
303
304## [0.4.10] - 2020-05-04
305
306- [Added `project_replace` method and `#[project_replace]` attribute.](https://github.com/taiki-e/pin-project/pull/194)
307  `project_replace` method is optional and can be enabled by passing the `Replace` argument to `#[pin_project]` attribute.
308  See [the documentation](https://docs.rs/pin-project/0.4/pin_project/attr.pin_project.html#project_replace) for more details.
309
310- [Support `Self` and `self` in more syntax positions inside `#[pinned_drop]` impl.](https://github.com/taiki-e/pin-project/pull/190)
311
312- [Hided all generated items except for projected types from calling code.](https://github.com/taiki-e/pin-project/pull/192) See [#192](https://github.com/taiki-e/pin-project/pull/192) for details.
313
314## [0.4.9] - 2020-04-14
315
316- [Fixed lifetime inference error when associated types are used in fields.](https://github.com/taiki-e/pin-project/pull/188)
317
318- [Fixed compile error with tuple structs with `where` clauses.](https://github.com/taiki-e/pin-project/pull/186)
319
320- [`#[project]` attribute can now be used for `if let` expressions.](https://github.com/taiki-e/pin-project/pull/181)
321
322## [0.4.8] - 2020-01-27
323
324- [Ensured that users cannot implement `PinnedDrop` without proper attribute argument.](https://github.com/taiki-e/pin-project/pull/180)
325
326- [Fixed use of `Self` in expression position inside `#[pinned_drop]` impl.](https://github.com/taiki-e/pin-project/pull/177)
327
328## [0.4.7] - 2020-01-20
329
330- [Fixed support for lifetime bounds.](https://github.com/taiki-e/pin-project/pull/176)
331
332## [0.4.6] - 2019-11-20
333
334- [Fixed compile error when there is `Self` in the where clause.](https://github.com/taiki-e/pin-project/pull/169)
335
336## [0.4.5] - 2019-10-21
337
338- [Fixed compile error with `dyn` types.](https://github.com/taiki-e/pin-project/pull/158)
339
340## [0.4.4] - 2019-10-17
341
342- [Fixed an issue where `PinnedDrop` implementations can call unsafe code without an unsafe block.](https://github.com/taiki-e/pin-project/pull/149)
343
344## [0.4.3] - 2019-10-15
345
346**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details.
347
348- [`#[pin_project]` can now interoperate with `#[cfg_attr()]`.](https://github.com/taiki-e/pin-project/pull/135)
349
350- [`#[pin_project]` can now interoperate with `#[cfg()]` on tuple structs and tuple variants.](https://github.com/taiki-e/pin-project/pull/135)
351
352- [Fixed support for DSTs(Dynamically Sized Types) on `#[pin_project(UnsafeUnpin)]`](https://github.com/taiki-e/pin-project/pull/120)
353
354- Diagnostic improvements.
355
356## [0.4.2] - 2019-09-29
357
358**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details.
359
360- [Fixed support for DSTs(Dynamically Sized Types).](https://github.com/taiki-e/pin-project/pull/113)
361
362## [0.4.1] - 2019-09-26
363
364**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details.
365
366- [Fixed an issue that caused an error when using `#[pin_project]` on a type that has `#[pin]` + `!Unpin` field with no generics or lifetime.](https://github.com/taiki-e/pin-project/pull/111)
367
368## [0.4.0] - 2019-09-25
369
370**Note: This release has been yanked.** See [#148](https://github.com/taiki-e/pin-project/pull/148) for details.
371
372- [**Pin projection has become a safe operation.**](https://github.com/taiki-e/pin-project/pull/18) In the absence of other unsafe code that you write, it is impossible to cause undefined behavior.
373
374- `#[unsafe_project]` attribute has been replaced with `#[pin_project]` attribute. ([#18](https://github.com/taiki-e/pin-project/pull/18), [#33](https://github.com/taiki-e/pin-project/pull/33))
375
376- [The `Unpin` argument has been removed - an `Unpin` impl is now generated by default.](https://github.com/taiki-e/pin-project/pull/18)
377
378- Drop impls must be specified with `#[pinned_drop]` instead of via a normal `Drop` impl. ([#18](https://github.com/taiki-e/pin-project/pull/18), [#33](https://github.com/taiki-e/pin-project/pull/33), [#86](https://github.com/taiki-e/pin-project/pull/86))
379
380- [`Unpin` impls must be specified with an impl of `UnsafeUnpin`, instead of implementing the normal `Unpin` trait.](https://github.com/taiki-e/pin-project/pull/18)
381
382- [`#[pin_project]` attribute now determines the visibility of the projection type/method is based on the original type.](https://github.com/taiki-e/pin-project/pull/96)
383
384- [`#[pin_project]` can now be used for public type with private field types.](https://github.com/taiki-e/pin-project/pull/53)
385
386- [`#[pin_project]` can now interoperate with `#[cfg()]`.](https://github.com/taiki-e/pin-project/pull/77)
387
388- [Added `project_ref` method to `#[pin_project]` types.](https://github.com/taiki-e/pin-project/pull/93)
389
390- [Added `#[project_ref]` attribute.](https://github.com/taiki-e/pin-project/pull/93)
391
392- [Removed "project_attr" feature and always enable `#[project]` attribute.](https://github.com/taiki-e/pin-project/pull/94)
393
394- [`#[project]` attribute can now be used for `impl` blocks.](https://github.com/taiki-e/pin-project/pull/46)
395
396- [`#[project]` attribute can now be used for `use` statements.](https://github.com/taiki-e/pin-project/pull/85)
397
398- [`#[project]` attribute now supports `match` expressions at the position of the initializer expression of `let` expressions.](https://github.com/taiki-e/pin-project/pull/51)
399
400Changes since the 0.4.0-beta.1 release:
401
402- [Fixed an issue that caused an error when using `#[pin_project(UnsafeUnpin)]` and not providing a manual `UnsafeUnpin` implementation on a type with no generics or lifetime.](https://github.com/taiki-e/pin-project/pull/107)
403
404## [0.4.0-beta.1] - 2019-09-21
405
406- [Changed the argument type of project method back to `self: Pin<&mut Self>`.](https://github.com/taiki-e/pin-project/pull/90)
407
408- [Removed "project_attr" feature and always enable `#[project]` attribute.](https://github.com/taiki-e/pin-project/pull/94)
409
410- [Removed "renamed" feature.](https://github.com/taiki-e/pin-project/pull/100)
411
412- [`#[project]` attribute can now be used for `use` statements.](https://github.com/taiki-e/pin-project/pull/85)
413
414- [Added `project_ref` method and `#[project_ref]` attribute.](https://github.com/taiki-e/pin-project/pull/93)
415
416- [`#[pin_project]` attribute now determines the visibility of the projection type/method is based on the original type.](https://github.com/taiki-e/pin-project/pull/96)
417
418## [0.4.0-alpha.11] - 2019-09-11
419
420- [Changed #[pinned_drop] to trait implementation.](https://github.com/taiki-e/pin-project/pull/86)
421
422  ```rust
423  #[pinned_drop]
424  impl<T> PinnedDrop for Foo<'_, T> {
425      fn drop(mut self: Pin<&mut Self>) {
426          **self.project().was_dropped = true;
427      }
428  }
429  ```
430
431- Added some examples and generated code.
432
433- Diagnostic improvements.
434
435## [0.4.0-alpha.10] - 2019-09-07
436
437- [`#[pin_project]` can now interoperate with `#[cfg()]`.](https://github.com/taiki-e/pin-project/pull/77)
438
439- Documentation improvements.
440
441## [0.4.0-alpha.9] - 2019-09-05
442
443- [Added 'project_into' method to `#[pin_project]` types](https://github.com/taiki-e/pin-project/pull/69). This can be useful when returning a pin projection from a method.
444
445  ```rust
446  fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T> {
447      self.project_into().pinned
448  }
449  ```
450
451- [Prevented UnpinStruct from appearing in the document by default.](https://github.com/taiki-e/pin-project/pull/71) See [#71](https://github.com/taiki-e/pin-project/pull/71) for more details.
452
453## [0.4.0-alpha.8] - 2019-09-03
454
455- [Improved document of generated code.](https://github.com/taiki-e/pin-project/pull/62). Also added an option to control the document of generated code. See [#62](https://github.com/taiki-e/pin-project/pull/62) for more details.
456
457- [Diagnostic improvements.](https://github.com/taiki-e/pin-project/pull/61)
458
459## [0.4.0-alpha.7] - 2019-09-02
460
461- [Suppress `dead_code` lint in generated types.](https://github.com/taiki-e/pin-project/pull/57)
462
463## [0.4.0-alpha.6] - 2019-09-01
464
465- [Allowed using `#[pin_project]` type with private field types](https://github.com/taiki-e/pin-project/pull/53)
466
467## [0.4.0-alpha.5] - 2019-08-24
468
469- [`#[project]` attribute now supports `match` expressions at the position of the initializer expression of `let` expressions.](https://github.com/taiki-e/pin-project/pull/51)
470
471## [0.4.0-alpha.4] - 2019-08-23
472
473- Suppress `clippy::drop_bounds` lint in generated code.
474
475## [0.4.0-alpha.3] - 2019-08-23
476
477- [Changed `project` method generated by `#[pin_project]` attribute to take an `&mut Pin<&mut Self>` argument.](https://github.com/taiki-e/pin-project/pull/47)
478
479- [`#[project]` attribute can now be used for impl blocks.](https://github.com/taiki-e/pin-project/pull/46)
480
481- [`#[pin_project]` attribute can now detect that the type used does not have its own drop implementation without actually implementing drop.](https://github.com/taiki-e/pin-project/pull/48) This removed some restrictions.
482
483## [0.4.0-alpha.2] - 2019-08-13
484
485- Updated `proc-macro2`, `syn`, and `quote` to 1.0.
486
487## [0.4.0-alpha.1] - 2019-08-11
488
489- **Pin projection has become a safe operation.**
490
491- `#[unsafe_project]` has been replaced with `#[pin_project]`.
492
493- The `Unpin` argument has been removed - an `Unpin` impl is now generated by default.
494
495- Drop impls must be specified with `#[pinned_drop]` instead of via a normal `Drop` impl.
496
497- `Unpin` impls must be specified with an impl of `UnsafeUnpin`, instead of implementing the normal `Unpin` trait.
498
499- Made `#[project]` attribute disabled by default.
500
501See also [tracking issue for 0.4 release](https://github.com/taiki-e/pin-project/issues/21).
502
503## [0.3.5] - 2019-08-14
504
505- Updated `proc-macro2`, `syn`, and `quote` to 1.0.
506
507## [0.3.4] - 2019-07-21
508
509- Diagnostic improvements.
510
511## [0.3.3] - 2019-07-15
512
513**Note: This release has been yanked.** See [#16](https://github.com/taiki-e/pin-project/issues/16) for details.
514
515- Diagnostic improvements.
516
517## [0.3.2] - 2019-03-30
518
519- Avoided suffixes on tuple index.
520
521## [0.3.1] - 2019-03-02
522
523- Documentation improvements.
524
525- Updated minimum `syn` version to 0.15.22.
526
527## [0.3.0] - 2019-02-20
528
529- Removed `unsafe_fields` attribute.
530
531- Removed `unsafe_variants` attribute.
532
533## [0.2.2] - 2019-02-20
534
535- Fixed a bug that generates incorrect code for the some structures with trait bounds on type generics.
536
537## [0.2.1] - 2019-02-20
538
539- Fixed a bug that generates incorrect code for the structures with where clause and associated type fields.
540
541## [0.2.0] - 2019-02-11
542
543- Made `unsafe_fields` optional.
544
545- Documentation improvements.
546
547## [0.1.8] - 2019-02-02
548
549- Added the feature to create projected enums to `unsafe_project`.
550
551- Added `project` attribute to support pattern matching.
552
553## [0.1.7] - 2019-01-19
554
555- Fixed documentation.
556
557## [0.1.6] - 2019-01-19
558
559- `unsafe_fields` can now opt-out.
560
561- Added `unsafe_variants` attribute. This attribute is available if pin-project is built with the "unsafe_variants" feature.
562
563## [0.1.5] - 2019-01-17
564
565- Added support for tuple struct to `unsafe_project`.
566
567## [0.1.4] - 2019-01-12
568
569- Added options for automatically implementing `Unpin` to both `unsafe_project` and `unsafe_fields`.
570
571## [0.1.3] - 2019-01-11
572
573- Fixed dependencies.
574
575- Added `unsafe_fields` attribute.
576
577## [0.1.2] - 2019-01-09
578
579- Documentation improvements.
580
581## [0.1.1] - 2019-01-08
582
583- Renamed from `unsafe_pin_project` to `unsafe_project`.
584
585## [0.1.0] - 2019-01-08
586
587**Note: This release has been yanked.**
588
589Initial release
590
591[Unreleased]: https://github.com/taiki-e/pin-project/compare/v1.0.6...HEAD
592[1.0.6]: https://github.com/taiki-e/pin-project/compare/v1.0.5...v1.0.6
593[1.0.5]: https://github.com/taiki-e/pin-project/compare/v1.0.4...v1.0.5
594[1.0.4]: https://github.com/taiki-e/pin-project/compare/v1.0.3...v1.0.4
595[1.0.3]: https://github.com/taiki-e/pin-project/compare/v1.0.2...v1.0.3
596[1.0.2]: https://github.com/taiki-e/pin-project/compare/v1.0.1...v1.0.2
597[1.0.1]: https://github.com/taiki-e/pin-project/compare/v1.0.0...v1.0.1
598[1.0.0]: https://github.com/taiki-e/pin-project/compare/v1.0.0-alpha.1...v1.0.0
599[1.0.0-alpha.1]: https://github.com/taiki-e/pin-project/compare/v0.4.23...v1.0.0-alpha.1
600[0.4.27]: https://github.com/taiki-e/pin-project/compare/v0.4.26...v0.4.27
601[0.4.26]: https://github.com/taiki-e/pin-project/compare/v0.4.25...v0.4.26
602[0.4.25]: https://github.com/taiki-e/pin-project/compare/v0.4.24...v0.4.25
603[0.4.24]: https://github.com/taiki-e/pin-project/compare/v0.4.23...v0.4.24
604[0.4.23]: https://github.com/taiki-e/pin-project/compare/v0.4.22...v0.4.23
605[0.4.22]: https://github.com/taiki-e/pin-project/compare/v0.4.21...v0.4.22
606[0.4.21]: https://github.com/taiki-e/pin-project/compare/v0.4.20...v0.4.21
607[0.4.20]: https://github.com/taiki-e/pin-project/compare/v0.4.19...v0.4.20
608[0.4.19]: https://github.com/taiki-e/pin-project/compare/v0.4.18...v0.4.19
609[0.4.18]: https://github.com/taiki-e/pin-project/compare/v0.4.17...v0.4.18
610[0.4.17]: https://github.com/taiki-e/pin-project/compare/v0.4.16...v0.4.17
611[0.4.16]: https://github.com/taiki-e/pin-project/compare/v0.4.15...v0.4.16
612[0.4.15]: https://github.com/taiki-e/pin-project/compare/v0.4.14...v0.4.15
613[0.4.14]: https://github.com/taiki-e/pin-project/compare/v0.4.13...v0.4.14
614[0.4.13]: https://github.com/taiki-e/pin-project/compare/v0.4.11...v0.4.13
615[0.4.12]: https://github.com/taiki-e/pin-project/compare/v0.4.10...v0.4.12
616[0.4.11]: https://github.com/taiki-e/pin-project/compare/v0.4.10...v0.4.11
617[0.4.10]: https://github.com/taiki-e/pin-project/compare/v0.4.9...v0.4.10
618[0.4.9]: https://github.com/taiki-e/pin-project/compare/v0.4.8...v0.4.9
619[0.4.8]: https://github.com/taiki-e/pin-project/compare/v0.4.7...v0.4.8
620[0.4.7]: https://github.com/taiki-e/pin-project/compare/v0.4.6...v0.4.7
621[0.4.6]: https://github.com/taiki-e/pin-project/compare/v0.4.5...v0.4.6
622[0.4.5]: https://github.com/taiki-e/pin-project/compare/v0.4.4...v0.4.5
623[0.4.4]: https://github.com/taiki-e/pin-project/compare/v0.4.3...v0.4.4
624[0.4.3]: https://github.com/taiki-e/pin-project/compare/v0.4.2...v0.4.3
625[0.4.2]: https://github.com/taiki-e/pin-project/compare/v0.4.1...v0.4.2
626[0.4.1]: https://github.com/taiki-e/pin-project/compare/v0.4.0...v0.4.1
627[0.4.0]: https://github.com/taiki-e/pin-project/compare/v0.4.0-beta.1...v0.4.0
628[0.4.0-beta.1]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.11...v0.4.0-beta.1
629[0.4.0-alpha.11]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.10...v0.4.0-alpha.11
630[0.4.0-alpha.10]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.9...v0.4.0-alpha.10
631[0.4.0-alpha.9]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.8...v0.4.0-alpha.9
632[0.4.0-alpha.8]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.7...v0.4.0-alpha.8
633[0.4.0-alpha.7]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.6...v0.4.0-alpha.7
634[0.4.0-alpha.6]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.5...v0.4.0-alpha.6
635[0.4.0-alpha.5]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.4...v0.4.0-alpha.5
636[0.4.0-alpha.4]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.3...v0.4.0-alpha.4
637[0.4.0-alpha.3]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.2...v0.4.0-alpha.3
638[0.4.0-alpha.2]: https://github.com/taiki-e/pin-project/compare/v0.4.0-alpha.1...v0.4.0-alpha.2
639[0.4.0-alpha.1]: https://github.com/taiki-e/pin-project/compare/v0.3.5...v0.4.0-alpha.1
640[0.3.5]: https://github.com/taiki-e/pin-project/compare/v0.3.4...v0.3.5
641[0.3.4]: https://github.com/taiki-e/pin-project/compare/v0.3.3...v0.3.4
642[0.3.3]: https://github.com/taiki-e/pin-project/compare/v0.3.2...v0.3.3
643[0.3.2]: https://github.com/taiki-e/pin-project/compare/v0.3.1...v0.3.2
644[0.3.1]: https://github.com/taiki-e/pin-project/compare/v0.3.0...v0.3.1
645[0.3.0]: https://github.com/taiki-e/pin-project/compare/v0.2.2...v0.3.0
646[0.2.2]: https://github.com/taiki-e/pin-project/compare/v0.2.1...v0.2.2
647[0.2.1]: https://github.com/taiki-e/pin-project/compare/v0.2.0...v0.2.1
648[0.2.0]: https://github.com/taiki-e/pin-project/compare/v0.1.8...v0.2.0
649[0.1.8]: https://github.com/taiki-e/pin-project/compare/v0.1.7...v0.1.8
650[0.1.7]: https://github.com/taiki-e/pin-project/compare/v0.1.6...v0.1.7
651[0.1.6]: https://github.com/taiki-e/pin-project/compare/v0.1.5...v0.1.6
652[0.1.5]: https://github.com/taiki-e/pin-project/compare/v0.1.4...v0.1.5
653[0.1.4]: https://github.com/taiki-e/pin-project/compare/v0.1.3...v0.1.4
654[0.1.3]: https://github.com/taiki-e/pin-project/compare/v0.1.2...v0.1.3
655[0.1.2]: https://github.com/taiki-e/pin-project/compare/v0.1.1...v0.1.2
656[0.1.1]: https://github.com/taiki-e/pin-project/compare/v0.1.0...v0.1.1
657[0.1.0]: https://github.com/taiki-e/pin-project/releases/tag/v0.1.0
658