This generator has a size of 4 Bytes:
let mut gen = |mut x| {
loop {
drop(x);
yield;
x = makeit();
useit(&x);
}
};
This one is 16 Bytes in size, even though it also does not need to keep x alive across the yield:
let mut gen = |mut x| {
loop {
drop(x);
x = yield;
useit(&x);
}
};
(where makeit is a fn returning a usize, and useit is a fn taking &usize)
This seems to be fallout from #69302. Either the layout calculation soundness fix exposed it, or the visitor changes in there caused it.
This means that #69033 will increase the size of futures created from async fns, unless this bug is fixed.
This generator has a size of 4 Bytes:
This one is 16 Bytes in size, even though it also does not need to keep
xalive across theyield:(where
makeitis a fn returning ausize, anduseitis a fn taking&usize)This seems to be fallout from #69302. Either the layout calculation soundness fix exposed it, or the visitor changes in there caused it.
This means that #69033 will increase the size of futures created from async fns, unless this bug is fixed.