Вообще, проблема с листом в куче не то чтобы большая, но писать много придётся, потому что многие функции там жрут весь лист, а не ссылку на него, и всё это надо переписать под новый лист.
Тут заметно, что Generic просто взяли из хаскеля или скаловского шейплесс, особенно не переделав под раст-специфику.
Потому что для раста важно наличие чего-то вроде такого:
trait AsRefGeneric<'a> {
type Repr: 'a;
fn as_generic(&'a self) -> Self::Repr;
}