Por que o Rust é ruim?
ATENÇÃO: Essa é somente a minha opinião sobre a linguagem. Não leve para o pessoal nem como um xingamento ou insulto.
Eu estou desenvolvendo em Rust durante um tempo e eu percebi coisas que têm o objetivo de ajudar mas no fim só atrapalham.
O Rust é conhecido por ser uma linguagem segura por conta de suas estratégias para evitar o uso de Garbage Collector (coletor de lixo) para limpar dados da memória que onão estão mais sendo usados, que é uma estratégia mais lenta porém mais comum. Uma de suas estratégias mais conhecida é o sistema de ownership que conta com um borrow checker para checar se os valores estão sendo "apropriados" de outras estruturas. Para mais informações sobre esse sistema acesse a documentação do Rust: https://rust-br.github.io/rust-book-pt-br/ch04-00-understanding-ownership.html.
Eu vejo (durante o desenvolvimento com o rust) várias situações em que você escreve o código por "intuição" achando que vai funcionar normalmente mas quando você executa, vemos linhas e mais linhas de mensagens de erro. Essas situações estão quase sempre envolvidas com os sistema de segurança do Rust.
"Não há uma vez em que eu programo em Rust no qual eu não passo raiva desnecessária por conta desses sistemas."
Muitos podem argumentar sobre a própria segurança que esses sistemas trazem ao projeto mas, na minha opinião, não valem a pena. A frustração durante o desenvolvimento é muito grande e podendo até gerar desconcentração e até desistência do projeto.
Eu não estou condenando os sistemas do Rust. Eles são muito bem feitos e muito geniais. Mas eu acho que não se encaixam nos padrões do que seria uma linguagem de programação nos dias de hoje. Eu acredito que o Rust deveria ter aparecido um pouco antes do boom do Java, entre 2000 e 2010.
Exemplos
Eu vou mostrar dois exemplos de partes da documentação do Rust que "entregam" esses principais problemas do Rust.
Sintaxe Poluída
- Veja como a sintaxe de lifetimes usa o caractere
'
para identificar um nome, mas de uma forma muito estranha e sem sentido.
"Por que não substituir os lifetimes por uma melhora no sistema de borrowing e remover essa sintaxe tão feia?"
Complexidade excessiva
https://doc.rust-lang.org/rust-by-example/std_misc/file/read_lines.html
- Observe como a página chama o método
read_lines
como um método beginner friendly (amigável e para iniciantes) - O método amigável para iniciantes é claramente mais legível que o mais eficiente.
"Por que não adaptar o compilador do Rust para fazer com que o método amigável para iniciantes ter a mesma velocidade do mais eficiente?"