Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

Unreleased

0.4.22 - 2020-06-14

  • Documentation improvements.

0.4.21 - 2020-06-13

0.4.20 - 2020-06-07

0.4.19 - 2020-06-04

0.4.18 - 2020-06-04

0.4.17 - 2020-05-18

  • Support naming the projection types.

    By passing an argument with the same name as the method to the attribute, you can name the projection type returned from the method:

    use pin_project::pin_project;
    use std::pin::Pin;
    
    #[pin_project(project = EnumProj)]
    enum Enum<T> {
        Variant(#[pin] T),
    }
    
    fn func<T>(x: Pin<&mut Enum<T>>) {
        match x.project() {
            EnumProj::Variant(y) => {
                let _: Pin<&mut T> = y;
            }
        }
    }
    

0.4.16 - 2020-05-11

0.4.15 - 2020-05-10

0.4.14 - 2020-05-09

0.4.13 - 2020-05-07

0.4.12 - 2020-05-07

0.4.11 - 2020-05-07 - YANKED

0.4.10 - 2020-05-04

0.4.9 - 2020-04-14

0.4.8 - 2020-01-27

0.4.7 - 2020-01-20

0.4.6 - 2019-11-20

0.4.5 - 2019-10-21

0.4.4 - 2019-10-17

0.4.3 - 2019-10-15 - YANKED

0.4.2 - 2019-09-29 - YANKED

0.4.1 - 2019-09-26 - YANKED

0.4.0 - 2019-09-25 - YANKED

Changes since the 0.4.0-beta.1 release:

0.4.0-beta.1 - 2019-09-21

0.4.0-alpha.11 - 2019-09-11

  • Changed #[pinned_drop] to trait implementation.

    #[pinned_drop]
    impl<T> PinnedDrop for Foo<'_, T> {
        fn drop(mut self: Pin<&mut Self>) {
            **self.project().was_dropped = true;
        }
    }
    
  • Added some examples and generated code.

  • Diagnostic improvements.

0.4.0-alpha.10 - 2019-09-07

0.4.0-alpha.9 - 2019-09-05

0.4.0-alpha.8 - 2019-09-03

0.4.0-alpha.7 - 2019-09-02

0.4.0-alpha.6 - 2019-09-01

0.4.0-alpha.5 - 2019-08-24

0.4.0-alpha.4 - 2019-08-23

  • Suppress clippy::drop_bounds lint in generated code.

0.4.0-alpha.3 - 2019-08-23

0.4.0-alpha.2 - 2019-08-13

  • Updated proc-macro2, syn, and quote to 1.0.

0.4.0-alpha.1 - 2019-08-11

  • Pin projection has become a safe operation.

  • #[unsafe_project] has been replaced with #[pin_project].

  • The Unpin argument has been removed - an Unpin impl is now generated by default.

  • Drop impls must be specified with #[pinned_drop] instead of via a normal Drop impl.

  • Unpin impls must be specified with an impl of UnsafeUnpin, instead of implementing the normal Unpin trait.

  • Made #[project] attribute disabled by default.

See also tracking issue for 0.4 release.

0.3.5 - 2019-08-14

  • Updated proc-macro2, syn, and quote to 1.0.

0.3.4 - 2019-07-21

  • Diagnostic improvements.

0.3.3 - 2019-07-15 - YANKED

  • Diagnostic improvements.

0.3.2 - 2019-03-30

  • Avoided suffixes on tuple index.

0.3.1 - 2019-03-02

  • Documentation improvements.

  • Updated minimum syn version to 0.15.22.

0.3.0 - 2019-02-20

  • Removed unsafe_fields attribute.

  • Removed unsafe_variants attribute.

0.2.2 - 2019-02-20

  • Fixed a bug that generates incorrect code for the some structures with trait bounds on type generics.

0.2.1 - 2019-02-20

  • Fixed a bug that generates incorrect code for the structures with where clause and associated type fields.

0.2.0 - 2019-02-11

  • Made unsafe_fields optional.

  • Documentation improvements.

0.1.8 - 2019-02-02

  • Added the feature to create projected enums to unsafe_project.

  • Added project attribute to support pattern matching.

0.1.7 - 2019-01-19

  • Fixed documentation.

0.1.6 - 2019-01-19

  • unsafe_fields can now opt-out.

  • Added unsafe_variants attribute. This attribute is available if pin-project is built with the “unsafe_variants” feature.

0.1.5 - 2019-01-17

  • Added support for tuple struct to unsafe_project.

0.1.4 - 2019-01-12

  • Added options for automatically implementing Unpin to both unsafe_project and unsafe_fields.

0.1.3 - 2019-01-11

  • Fixed dependencies.

  • Added unsafe_fields attribute.

0.1.2 - 2019-01-09

  • Documentation improvements.

0.1.1 - 2019-01-08

  • Renamed from unsafe_pin_project to unsafe_project.

0.1.0 - 2019-01-08 - YANKED

Initial release