summaryrefslogtreecommitdiffstats
path: root/third_party/rust/zerocopy-derive/tests/priv_in_pub.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/zerocopy-derive/tests/priv_in_pub.rs')
-rw-r--r--third_party/rust/zerocopy-derive/tests/priv_in_pub.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/third_party/rust/zerocopy-derive/tests/priv_in_pub.rs b/third_party/rust/zerocopy-derive/tests/priv_in_pub.rs
new file mode 100644
index 0000000000..5f7d8749d3
--- /dev/null
+++ b/third_party/rust/zerocopy-derive/tests/priv_in_pub.rs
@@ -0,0 +1,24 @@
+// Copyright 2019 The Fuchsia Authors
+//
+// Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
+// <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT
+// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option.
+// This file may not be copied, modified, or distributed except according to
+// those terms.
+
+use zerocopy::{AsBytes, FromBytes, FromZeroes, KnownLayout, Unaligned};
+
+// These derives do not result in E0446 as of Rust 1.59.0, because of
+// https://github.com/rust-lang/rust/pull/90586.
+//
+// This change eliminates one of the major downsides of emitting `where`
+// bounds for field types (i.e., the emission of E0446 for private field
+// types).
+
+#[derive(KnownLayout, AsBytes, FromZeroes, FromBytes, Unaligned)]
+#[repr(C)]
+pub struct Public(Private);
+
+#[derive(KnownLayout, AsBytes, FromZeroes, FromBytes, Unaligned)]
+#[repr(C)]
+struct Private(());