[−][src]Crate pin_project
An attribute that would create a projection struct covering all the fields.
Examples
use pin_project::unsafe_project; use std::pin::Pin; #[unsafe_project(Unpin)] struct Foo<T, U> { #[pin] future: T, field: U, } impl<T, U> Foo<T, U> { fn baz(mut self: Pin<&mut Self>) { let this = self.project(); let _: Pin<&mut T> = this.future; // Pinned reference to the field let _: &mut U = this.field; // Normal reference to the field } } // Automatically create the appropriate conditional Unpin implementation. // impl<T: Unpin, U> Unpin for Foo<T, U> {} // Conditional Unpin impl
See unsafe_project
for more details.
Rust Version
The current version of pin-project requires Rust nightly 2018-12-26 or later.
Attribute Macros
unsafe_fields | An attribute that would create projections for each struct fields. |
unsafe_project | An attribute that would create a projection struct covering all the fields. |