use From specializations on extend if extended Vec is empty
use From specializations on extend if extended Vec is empty

this enables in-place iteration and allocation reuse in additional cases

graydon/rust,graydon/rust,graydon/rust,aidancully/rust,aidancully/rust,aidancully/rust,aidancully/rust,aidancully/rust,graydon/rust,graydon/rust,graydon/rust,aidancully/rust