There's Vec::append that modifies the vector in-place, and destroys its argument.
If you're after saving a line of code through methods returning the vector itself, you won't find them.
This is because Rust has single ownership — a non-copyable object like Vec can exist in one place at a time, only. A method like foo.bar() can't return foo without also unconditionally destroying the foo variable. So methods are either designed to always move self (like .into()) or perform modification in place without returning self, but optional chaining doesn't work well with Rust's semantics.
Generally speaking, the standard library does not provide both &mut T and T -> T versions of a function. Off the top of my head I can't even think of any examples where it has provided both, unless you count operators. It typically prefers to expose the &mut T version as this is more versatile.
I generally begin with writing something like
let a = {
let mut a = func_1();
a.extend(func_2());
a
};
and in particularly egregious cases where the block expressions detract significantly from readibility, I define a helper function.