summaryrefslogtreecommitdiffstats
path: root/third_party/rust/pin-project/examples/pinned_drop.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/pin-project/examples/pinned_drop.rs')
-rw-r--r--third_party/rust/pin-project/examples/pinned_drop.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/third_party/rust/pin-project/examples/pinned_drop.rs b/third_party/rust/pin-project/examples/pinned_drop.rs
new file mode 100644
index 0000000000..6fb87193f6
--- /dev/null
+++ b/third_party/rust/pin-project/examples/pinned_drop.rs
@@ -0,0 +1,23 @@
+// See ./pinned_drop-expanded.rs for generated code.
+
+#![allow(dead_code)]
+
+use std::pin::Pin;
+
+use pin_project::{pin_project, pinned_drop};
+
+#[pin_project(PinnedDrop)]
+pub struct Struct<'a, T> {
+ was_dropped: &'a mut bool,
+ #[pin]
+ field: T,
+}
+
+#[pinned_drop]
+impl<T> PinnedDrop for Struct<'_, T> {
+ fn drop(self: Pin<&mut Self>) {
+ **self.project().was_dropped = true;
+ }
+}
+
+fn main() {}