summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Fitzgerald <fitzgen@gmail.com>2017-09-19 14:05:09 -0700
committerNick Fitzgerald <fitzgen@gmail.com>2017-09-20 10:33:33 -0700
commitc65cb37eb623d24ea8a4d822f45b71da6a5ec27b (patch)
tree17c2a37a38377da60f4463d61600dd4d3207e792
parent9d9eae0edd2134331763229d2998fe3a1ba54169 (diff)
Factor array size vs Rust derive limit checking into a common method
We were copying it around and it will be easier if it is defined in one place.
-rw-r--r--src/ir/layout.rs29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/ir/layout.rs b/src/ir/layout.rs
index 298fe54a..2df15ef2 100644
--- a/src/ir/layout.rs
+++ b/src/ir/layout.rs
@@ -104,44 +104,43 @@ impl Opaque {
None
}
}
-}
-impl CanTriviallyDeriveDebug for Opaque {
- fn can_trivially_derive_debug(&self) -> bool {
+ /// Return `true` if this opaque layout's array size will fit within the
+ /// maximum number of array elements that Rust allows deriving traits
+ /// with. Return `false` otherwise.
+ pub fn array_size_within_derive_limit(&self) -> bool {
self.array_size().map_or(false, |size| {
size <= RUST_DERIVE_IN_ARRAY_LIMIT
})
}
}
+impl CanTriviallyDeriveDebug for Opaque {
+ fn can_trivially_derive_debug(&self) -> bool {
+ self.array_size_within_derive_limit()
+ }
+}
+
impl CanTriviallyDeriveDefault for Opaque {
fn can_trivially_derive_default(&self) -> bool {
- self.array_size().map_or(false, |size| {
- size <= RUST_DERIVE_IN_ARRAY_LIMIT
- })
+ self.array_size_within_derive_limit()
}
}
impl CanTriviallyDeriveCopy for Opaque {
fn can_trivially_derive_copy(&self) -> bool {
- self.array_size().map_or(false, |size| {
- size <= RUST_DERIVE_IN_ARRAY_LIMIT
- })
+ self.array_size_within_derive_limit()
}
}
impl CanTriviallyDeriveHash for Opaque {
fn can_trivially_derive_hash(&self) -> bool {
- self.array_size().map_or(false, |size| {
- size <= RUST_DERIVE_IN_ARRAY_LIMIT
- })
+ self.array_size_within_derive_limit()
}
}
impl CanTriviallyDerivePartialEqOrPartialOrd for Opaque {
fn can_trivially_derive_partialeq_or_partialord(&self) -> bool {
- self.array_size().map_or(false, |size| {
- size <= RUST_DERIVE_IN_ARRAY_LIMIT
- })
+ self.array_size_within_derive_limit()
}
}