Não é bem controle de ponteiros que faz Rust ser interessante.
Nem Zig, C, ou C++ possuem controle do tempo de vida, por isso, todos os programadores nessas linguagens já sofreram com diversos problemas por desconhecer o tempo de vida. Isso é solucionado com cuidado, alguma ferramenta que ajuda ou criando um mecanismo que automatize isso.
Zig tem mecanismos que ajudam, inclusive melhorar a performance, mas não garantem nada. Pode ser suficiente para alguns programadores em alguns casos. Não vou entrar em detalhes.
Quando cria algo que automatize basicamente está criando um garbage collector, então provavelmente deveria escolher uma linguagem que tem um pronto e maduro para uso. Essas linguagens só devem ser escolhidas para uso se você está fazendo um sistema operacional, driver, serviços que precisa altíssima eficiência, mais em memória do que processamento, ainda que algumas linguagens com GC podem entregar resultado parecido sem muito trabalho ou risco.
Só é necessário o controle manual da memória onde você precisa o máximo de controle do que está na memória, e provavelmente ter a melhor performance, embora em muitos casos o GC pode ser mais perfermático. A esmagadora maioria das aplicações não precisa disso, nem deve se questionar.
Embora o controle manual de memória costume manter baixo o consumo de memória, frequentemente ele é mais caro em processamento, a não ser que utilize mecanismos complexos e aceite que a memória sobreviva mais tempo do que ela é usada.
Então a escolha está entre:
- usar o gerenciamento automático de memória
- o controle do tempo de vida das porções de memória, que o compilador pode conseguir fazer sozinho em alguns casos e você tem que fazer em outros
- se arriscar e fazer o melhor que pode para não ter erros de tempo de vida.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).