about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorMarvin Löbel <loebel.marvin@gmail.com>2015-02-10 14:37:44 +0100
committerMarvin Löbel <loebel.marvin@gmail.com>2015-02-10 14:37:44 +0100
commit792dc8d067d1f11e08e859ccdd45d59436773fc9 (patch)
treebec484d643168d295396b11fbdad73d6d80c8826 /src/libcoretest
parentde8bc44753881aacdaf435f5ba61de3c20916761 (diff)
downloadrust-792dc8d067d1f11e08e859ccdd45d59436773fc9.tar.gz
rust-792dc8d067d1f11e08e859ccdd45d59436773fc9.zip
Made the `ptr::Unique` type accept unsized types, to allow for use cases
like sending a raw pointer slice across thread boundaries.
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/ptr.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcoretest/ptr.rs b/src/libcoretest/ptr.rs
index 7f0b97c53d4..2365b907b3f 100644
--- a/src/libcoretest/ptr.rs
+++ b/src/libcoretest/ptr.rs
@@ -167,3 +167,12 @@ fn test_set_memory() {
     unsafe { set_memory(ptr, 5u8, xs.len()); }
     assert!(xs == [5u8; 20]);
 }
+
+#[test]
+fn test_unsized_unique() {
+    let xs: &mut [_] = &mut [1, 2, 3];
+    let ptr = Unique(xs as *mut [_]);
+    let ys = unsafe { &mut *ptr.0 };
+    let zs: &mut [_] = &mut [1, 2, 3];
+    assert!(ys == zs);
+}