Rust je příklad jazyka, který (schválně) není OOP, ale některé vlastnosti OO jazyků implementuje (zapouzdření atd.) - osobně nejsem taktéž příznivcem OOP, ale je třeba si položit otázku, co přesně má daná abstrakce řešit a proč bych ji (ne)měl potřebovat. Doporučuju se podívat třeba sem: https://www.thecodedmessage.com/tags/beyond-oop/
Metaprogramování je nástroj jako každý jiný. Nemá smysl si tu otázku pokládat takto obecně.