We have a piece of simple code that looks a bit like this:
let action = self.iter().next()?;
self.0.remove(action);
Some(action)
where self.iter() just defers to EnumSet::iter().
Looking at the asm with cargo asm, I see something like below. There's a non-inlined call to iter. After adding #[inline] in enumset, you can see at the bottom snipped that the call disappears and assembly ends up being much better.
We have a piece of simple code that looks a bit like this:
where
self.iter()
just defers toEnumSet::iter()
.Looking at the asm with
cargo asm
, I see something like below. There's a non-inlined call toiter
. After adding#[inline]
inenumset
, you can see at the bottom snipped that the call disappears and assembly ends up being much better.