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## [0.2.8] - 2021-12-31 14 15- Fix handling of trailing commas in `PinnedDrop` impl. ([#64](https://github.com/taiki-e/pin-project-lite/pull/64), thanks @Michael-J-Ward) 16 17## [0.2.7] - 2021-06-26 18 19- [Support custom Drop implementation.](https://github.com/taiki-e/pin-project-lite/pull/25) See [#25](https://github.com/taiki-e/pin-project-lite/pull/25) for details. 20 21## [0.2.6] - 2021-03-04 22 23- Support item attributes in any order. ([#57](https://github.com/taiki-e/pin-project-lite/pull/57), thanks @SabrinaJewson) 24 25## [0.2.5] - 2021-03-02 26 27- [Prepare for removal of `safe_packed_borrows` lint.](https://github.com/taiki-e/pin-project-lite/pull/55) See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 28 29## [0.2.4] - 2021-01-11 30 31**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 32 33- Add `project_replace`. ([#43](https://github.com/taiki-e/pin-project-lite/pull/43), thanks @Marwes) 34 35## [0.2.3] - 2021-01-09 36 37**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 38 39- [Suppress `clippy::unknown_clippy_lints` lint in generated code.](https://github.com/taiki-e/pin-project-lite/pull/47) 40 41## [0.2.2] - 2021-01-09 42 43**NOTE:** This release has been yanked.** See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 44 45- [Suppress `clippy::ref_option_ref` lint in generated code.](https://github.com/taiki-e/pin-project-lite/pull/45) 46 47## [0.2.1] - 2021-01-05 48 49**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 50 51- Exclude unneeded files from crates.io. 52 53## [0.2.0] - 2020-11-13 54 55**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 56 57- [`pin_project!` macro now supports enums.](https://github.com/taiki-e/pin-project-lite/pull/28) 58 59 To use `pin_project!` on enums, you need to name the projection type returned from the method. 60 61 ```rust 62 use pin_project_lite::pin_project; 63 use std::pin::Pin; 64 65 pin_project! { 66 #[project = EnumProj] 67 enum Enum<T, U> { 68 Variant { #[pin] pinned: T, unpinned: U }, 69 } 70 } 71 72 impl<T, U> Enum<T, U> { 73 fn method(self: Pin<&mut Self>) { 74 match self.project() { 75 EnumProj::Variant { pinned, unpinned } => { 76 let _: Pin<&mut T> = pinned; 77 let _: &mut U = unpinned; 78 } 79 } 80 } 81 } 82 ``` 83 84- [Support naming the projection types.](https://github.com/taiki-e/pin-project-lite/pull/28) 85 86 By passing an attribute with the same name as the method, you can name the projection type returned from the method: 87 88 ```rust 89 use pin_project_lite::pin_project; 90 use std::pin::Pin; 91 92 pin_project! { 93 #[project = StructProj] 94 struct Struct<T> { 95 #[pin] 96 field: T, 97 } 98 } 99 100 fn func<T>(x: Pin<&mut Struct<T>>) { 101 let StructProj { field } = x.project(); 102 let _: Pin<&mut T> = field; 103 } 104 ``` 105 106## [0.1.12] - 2021-03-02 107 108- [Prepare for removal of `safe_packed_borrows` lint.](https://github.com/taiki-e/pin-project-lite/pull/55) See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 109 110## [0.1.11] - 2020-10-20 111 112**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 113 114- Suppress `clippy::redundant_pub_crate` lint in generated code. 115 116- Documentation improvements. 117 118## [0.1.10] - 2020-10-01 119 120**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 121 122- Suppress `drop_bounds` lint, which will be added to rustc in the future. See [taiki-e/pin-project#272](https://github.com/taiki-e/pin-project/issues/272) for more details. 123 124## [0.1.9] - 2020-09-29 125 126**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 127 128- [Fix trailing comma support in generics.](https://github.com/taiki-e/pin-project-lite/pull/32) 129 130## [0.1.8] - 2020-09-26 131 132**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 133 134- [Fix compatibility of generated code with `forbid(future_incompatible)`.](https://github.com/taiki-e/pin-project-lite/pull/30) 135 136 Note: This does not guarantee compatibility with `forbid(future_incompatible)` in the future. 137 If rustc adds a new lint, we may not be able to keep this. 138 139## [0.1.7] - 2020-06-04 140 141**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 142 143- [Support `?Sized` bounds in where clauses.](https://github.com/taiki-e/pin-project-lite/pull/22) 144 145- [Fix lifetime inference error when an associated type is used in fields.](https://github.com/taiki-e/pin-project-lite/pull/20) 146 147- Suppress `clippy::used_underscore_binding` lint in generated code. 148 149- Documentation improvements. 150 151## [0.1.6] - 2020-05-31 152 153**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 154 155- [Support lifetime bounds in where clauses.](https://github.com/taiki-e/pin-project-lite/pull/18) 156 157- Documentation improvements. 158 159## [0.1.5] - 2020-05-07 160 161**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 162 163- [Support overwriting the name of `core` crate.](https://github.com/taiki-e/pin-project-lite/pull/14) 164 165## [0.1.4] - 2020-01-20 166 167**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 168 169- [Support ?Sized bounds in generic parameters.](https://github.com/taiki-e/pin-project-lite/pull/9) 170 171## [0.1.3] - 2020-01-20 172 173**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 174 175- [Support lifetime bounds in generic parameters.](https://github.com/taiki-e/pin-project-lite/pull/7) 176 177## [0.1.2] - 2020-01-05 178 179**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 180 181- Support recognizing default generic parameters. ([#6](https://github.com/taiki-e/pin-project-lite/pull/6), thanks @kennytm) 182 183## [0.1.1] - 2019-11-15 184 185**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 186 187- [`pin_project!` macro now determines the visibility of the projection type/method is based on the original type.](https://github.com/taiki-e/pin-project-lite/pull/5) 188 189## [0.1.0] - 2019-10-22 190 191**NOTE:** This release has been yanked. See [#55](https://github.com/taiki-e/pin-project-lite/pull/55) for details. 192 193Initial release 194 195[Unreleased]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.8...HEAD 196[0.2.8]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.7...v0.2.8 197[0.2.7]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.6...v0.2.7 198[0.2.6]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.5...v0.2.6 199[0.2.5]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.4...v0.2.5 200[0.2.4]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.3...v0.2.4 201[0.2.3]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.2...v0.2.3 202[0.2.2]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.1...v0.2.2 203[0.2.1]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.0...v0.2.1 204[0.2.0]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.11...v0.2.0 205[0.1.12]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.11...v0.1.12 206[0.1.11]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.10...v0.1.11 207[0.1.10]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.9...v0.1.10 208[0.1.9]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.8...v0.1.9 209[0.1.8]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.7...v0.1.8 210[0.1.7]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.6...v0.1.7 211[0.1.6]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.5...v0.1.6 212[0.1.5]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.4...v0.1.5 213[0.1.4]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.3...v0.1.4 214[0.1.3]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.2...v0.1.3 215[0.1.2]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.1...v0.1.2 216[0.1.1]: https://github.com/taiki-e/pin-project-lite/compare/v0.1.0...v0.1.1 217[0.1.0]: https://github.com/taiki-e/pin-project-lite/releases/tag/v0.1.0 218