diff options
Diffstat (limited to 'src/test/ui/functions-closures/nullable-pointer-opt-closures.rs')
-rw-r--r-- | src/test/ui/functions-closures/nullable-pointer-opt-closures.rs | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/src/test/ui/functions-closures/nullable-pointer-opt-closures.rs b/src/test/ui/functions-closures/nullable-pointer-opt-closures.rs deleted file mode 100644 index 87dacfba2..000000000 --- a/src/test/ui/functions-closures/nullable-pointer-opt-closures.rs +++ /dev/null @@ -1,34 +0,0 @@ -// run-pass - -use std::mem; - -pub fn main() { - // By Ref Capture - let a = 10i32; - let b = Some(|| println!("{}", a)); - // When we capture by reference we can use any of the - // captures as the discriminant since they're all - // behind a pointer. - assert_eq!(mem::size_of_val(&b), mem::size_of::<usize>()); - - // By Value Capture - let a = Box::new(12i32); - let b = Some(move || println!("{}", a)); - // We captured `a` by value and since it's a `Box` we can use it - // as the discriminant. - assert_eq!(mem::size_of_val(&b), mem::size_of::<Box<i32>>()); - - // By Value Capture - Transitive case - let a = "Hello".to_string(); // String -> Vec -> Unique -> NonZero - let b = Some(move || println!("{}", a)); - // We captured `a` by value and since down the chain it contains - // a `NonZero` field, we can use it as the discriminant. - assert_eq!(mem::size_of_val(&b), mem::size_of::<String>()); - - // By Value - No Optimization - let a = 14i32; - let b = Some(move || println!("{}", a)); - // We captured `a` by value but we can't use it as the discriminant - // thus we end up with an extra field for the discriminant - assert_eq!(mem::size_of_val(&b), mem::size_of::<(i32, i32)>()); -} |