Vec - это обычное значение, как u32 или Box<str>,( ptr, len и cap составные части этого значении). Его можно разместить где угодно, в том числе в куче, на стеке, в статической переменной.
Вопрос концептуальный есть аст, для него есть класс обертка который также оборачивает все ноды в {owner, concreate node} для того что бы предоставить возможность разрешать идентификаторы, спрашивать размеры типов ну и тд
А может функция вернуть тюпл со структурой и ссылкой на что-то внутри этой структуры?
нет, ибо нужно сначала взять ссылку внутрь структуры, а потом переместить структуру в кортеж => сслыка станет невалидной. только если ссылка не в кучу указывает, типа в структуре вектор а в кортеже слайс этого вектора