Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
cc #21
Changes since the latest 0.3 release:
Pin projection has become a safe operation. In the absence of other unsafe code that you write, it is impossible to cause undefined behavior. (Replace
unsafe_project
with safepin_projectable
attribute #18)#[unsafe_project]
attribute has been replaced with#[pin_project]
attribute. (Replaceunsafe_project
with safepin_projectable
attribute #18, Remove pin_project! macro and add #[pinned_drop] attribute #33)The
Unpin
argument has been removed - anUnpin
impl is now generated by default. (Replaceunsafe_project
with safepin_projectable
attribute #18)Drop impls must be specified with
#[pinned_drop]
instead of via a normalDrop
impl. (Replaceunsafe_project
with safepin_projectable
attribute #18, Remove pin_project! macro and add #[pinned_drop] attribute #33, Change #[pinned_drop] to trait implementation #86)Unpin
impls must be specified with an impl ofUnsafeUnpin
, instead of implementing the normalUnpin
trait. (Replaceunsafe_project
with safepin_projectable
attribute #18)#[pin_project]
attribute now determines the visibility of the projection type/method is based on the original type. (Determine the visibility based on the original type #96)#[pin_project]
can now be used for public type with private field types. (Allow using #[pin_project] type with private field types #53)#[pin_project]
can now interoperate with#[cfg()]
. (Move automatic generation of Unpin implementation to proc-macro-derive #77)Added
project_ref
method to#[pin_project]
types. (Add project_ref method and #[project_ref] attribute #93)Added
#[project_ref]
attribute. (Add project_ref method and #[project_ref] attribute #93)Removed "project_attr" feature and always enable
#[project]
attribute. (Remove "project_attr" feature and always enable #[project] attribute #94)#[project]
attribute can now be used forimpl
blocks. (Add impl block support to #[project] attribute #46)#[project]
attribute can now be used foruse
statements. (Add use statements support to #[project] attribute #85)#[project]
attribute now supportsmatch
expressions at the position of the initializer expression oflet
expressions. (Support #[project] attribute on 'let var = match' exressions #51)Changes since the 0.4.0-beta.1 release:
#[pin_project(UnsafeUnpin)]
and not providing a manualUnsafeUnpin
implementation on a type with no generics or lifetime. (Add a dummy lifetime to Wrapper #107)