diff options
author | Chih-Hung Hsieh <chh@google.com> | 2020-05-13 16:08:03 -0700 |
---|---|---|
committer | Chih-Hung Hsieh <chh@google.com> | 2020-05-13 16:08:03 -0700 |
commit | 6f3e9271b123f94f158b1f000c996a558351320f (patch) | |
tree | c0d427205c0f0002d86155721cc4f8de67c4fbe5 /README.md | |
parent | 2e1ed433d835e9f8409237243b8c03b0be6a1310 (diff) | |
download | pin-project-6f3e9271b123f94f158b1f000c996a558351320f.tar.gz |
Import 'pin-project' package version 0.4.16
* Add OWNERS and Android.bp
Bug: 156165390
Test: make
Change-Id: I8ace68f978b2725ad91e0f64282003fa453674ca
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..840d1fa --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# pin-project + +[![crates-badge]][crates-url] +[![docs-badge]][docs-url] +[![license-badge]][license] +[![rustc-badge]][rustc-url] + +[crates-badge]: https://img.shields.io/crates/v/pin-project.svg +[crates-url]: https://crates.io/crates/pin-project +[docs-badge]: https://docs.rs/pin-project/badge.svg +[docs-url]: https://docs.rs/pin-project +[license-badge]: https://img.shields.io/crates/l/pin-project.svg +[license]: #license +[rustc-badge]: https://img.shields.io/badge/rustc-1.34+-lightgray.svg +[rustc-url]: https://blog.rust-lang.org/2019/04/11/Rust-1.34.0.html + +A crate for safe and ergonomic pin-projection. + +[Documentation][docs-url] + +[Examples](examples/README.md) + +## Usage + +Add this to your `Cargo.toml`: + +```toml +[dependencies] +pin-project = "0.4" +``` + +The current pin-project requires Rust 1.34 or later. + +## Examples + +[`pin_project`] attribute creates a projection struct covering all the fields. + +```rust +use pin_project::pin_project; +use std::pin::Pin; + +#[pin_project] +struct Struct<T, U> { + #[pin] + pinned: T, + unpinned: U, +} + +impl<T, U> Struct<T, U> { + fn foo(self: Pin<&mut Self>) { + let this = self.project(); + let _: Pin<&mut T> = this.pinned; // Pinned reference to the field + let _: &mut U = this.unpinned; // Normal reference to the field + } +} +``` + +[Code like this will be generated](examples/struct-default-expanded.rs) + +See [API documentation][docs-url] for more details. + +Also, there are examples and generated code of each feature in [examples](examples/README.md) directory. + +[`pin_project`]: https://docs.rs/pin-project/0.4/pin_project/attr.pin_project.html + +## License + +Licensed under either of + +* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>) +* MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>) + +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. |