Na verdade o borrow checker te salva de coisas que tem em linguagens como javascript que ninguem de conta como data races por exemplo, compartilhar referencias mutaveis é comportamente indefinido e ponto final. você deve sempre travar pra apenas ter 1 referencia mutavel por vez em qualquer linguagem e o borrow checker te salva disso.
E tambem tem que entender que não tem um runtime tomando conta de tudo, então você tá mexendo no nivel de um C++ da vida, por isso que existe várias maneiras de gerenciar memoria e vários "ponteiros inteligentes", que inclusive até existe similares no c++, so que não tem as verificações de segurança do rust em tempo de compilação.
Com certeza! Talvez eu devesse editar essa parte para ficar mais claro.
Quando eu digo sobre a dificuldade, não é um demérito ou crítica - até porque faz todo o sentido diante da abordagem da linguagem, e é algo ótimo para preservar a segurança e até mesmo ensinar o programador (as mensagens de erro do compilador são bem intuitivas). O que eu tava querendo passar era sobre a experiência, o que senti enquanto codava, e querendo ou não é frustrante "tomar bronca" do borrow checker (como eu falei). Não por demérito da linguagem, mas porque eu não tinha conhecimento ainda para entender. Perder tempo tentando entender esse fluxo para fazer coisas simples é algo que frustra.
Então é normal entender porque pessoas com menos tolerância a frustração acabam desistindo de aprender. No meu caso, foi desafiador e é algo que eu gosto, cativou mais, como se fosse um jogo.
Mas sim, o borrow checker é incrível porque te força a fazer a coisa correta. É o tipo de "mãe" rigorosa que cuida do filho e educa ele para ser o mais certinho possível, sem mimá-lo. Isso não é algo ruim, mas as vezes pode ser frustrante ou difícil para o filho. Só que se ele passar por essa etapa, com certeza será uma pessoa melhor. No caso do rust, um programador melhor.