Why is this an issue?

Initializing a vector with a chain of push invocations is less efficient than making the initialization with a single vector literal. Each invocation has a cost in itself.

On top of the performance argument, the vector literal is more concise and easier to read.

How to fix it

Introduce a single vector literal that includes all the elements that are added to the vector as arguments of the push invocations.

Code examples

Noncompliant code example

let mut v = Vec::new();
v.push(0);
v.push(1);
v.push(2);

Compliant solution

let v = vec![0, 1, 2];

Resources

Documentation