I tried replace Vec with SmallVec in a really hot loop in difftastic, and it's a huge speedup. It almost *halved* the runtime of one of my test files!
I've done a lot of performance tuning of difftastic, so it's surprising to see such a big win.
https://crates.io/crates/smallvec
miniblog.
Related Posts
TIL that Rust has a (i) icon that shows relevant traits that a type implements. This is useful to understand that e.g. .iter() on a Vec<T> iterates with &T.
https://doc.rust-lang.org/std/vec/struct.Vec.html#method.iter
It looks like one of my bug reports was mentioned, so I'm delighted but wish I'd noticed earlier!
Rust gotcha I haven't seen before: you can't move out of a vec by index, even if you own the vec.
This is because it'd leave the vec in a bad state: you need .remove() or .pop() instead.
I feel like Rust often pushes me to use concrete types.
It's a lot easier to return a Vec than an impl Iterator. It's not a big problem, but in e.g. Java I'd just say I'm returning some kind of iterator.

