]> git.lizzy.rs Git - rust.git/blob - tests/ui/generator/resume-arg-size.rs
Auto merge of #106458 - albertlarsan68:move-tests, r=jyn514
[rust.git] / tests / ui / generator / resume-arg-size.rs
1 #![feature(generators)]
2
3 // run-pass
4
5 use std::mem::size_of_val;
6
7 fn main() {
8     // Generator taking a `Copy`able resume arg.
9     let gen_copy = |mut x: usize| {
10         loop {
11             drop(x);
12             x = yield;
13         }
14     };
15
16     // Generator taking a non-`Copy` resume arg.
17     let gen_move = |mut x: Box<usize>| {
18         loop {
19             drop(x);
20             x = yield;
21         }
22     };
23
24     // Neither of these generators have the resume arg live across the `yield`, so they should be
25     // 1 Byte in size (only storing the discriminant)
26     assert_eq!(size_of_val(&gen_copy), 1);
27     assert_eq!(size_of_val(&gen_move), 1);
28 }