pin-project

Build Status version documentation license

An attribute that would create a projection struct covering all the fields.

Documentation

Usage

Add this to your Cargo.toml:

toml [dependencies] pin-project = "0.1"

Now, you can use pin-project:

rust use pin_project::unsafe_project;

The current version of pin-project requires Rust nightly 2018-12-26 or later.

Examples

```rust use pinproject::unsafeproject; use std::marker::Unpin; use std::pin::Pin;

[unsafe_project]

struct Foo { #[pin] future: T, field: U, }

impl Foo { 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 } }

impl Unpin for Foo {} // Conditional Unpin impl ```

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.