Executando verificação de segurança...
2

Veja no GitHub que o compilador de Rust é escrito na própria linguagem (mais de 96% do código é Rust, e nada de C++).

Este compilador gera o código intermediário do LLVM, que por sua vez gera o executável - o processo todo é descrito aqui.

Para entender como o compilador de uma linguagem pode ser escrito nela mesma, leia aqui (o link é sobre Java, mas a ideia geral é a mesma para qualquer linguagem).

De qualquer forma, não é a linguagem em que o compilador foi escrito que determina a "velocidade", e sim o que/como a linguagem faz as coisas. Por exemplo, a implementação atual do Python é escrita em C, mas muitas coisas em Python não chegam na mesma velocidade do C porque a linguagem tem um overhead interno - como o fato de cada valor (seja número, string, etc) ser um objeto complexo: uma simples soma de dois números resulta na chamada de um método.

O mesmo vale para qualquer linguagem.

Carregando publicação patrocinada...
2

Só para complementar, Rust, de acordo com a implementação oficial, gera um código intermediário que é então traduzido para o código intermediário do LLVM, exemplificado na postagem original.

Não é tão simples explicar a questão da velocidade sem que a pessoa tenha um entendimento amplo da computação e principalmente, deixar de lado os mitos que aprenderam vendo coisas na internet (sempre fala que ela é a casa do capeta, ela útil, mas ótima para ensinar algo errado, assim como o papel, ela aceita tudo, até muita coisa errada, e que pode prevalecer). Por isso que eu falo sempre para as pessoas não treinarem o erro.

A comparação com o gerador de energia não parece fazer sentido, ou eu não entendi o propósito.

De qualquer forma o mais importante é que as linguagens não possuem velocidade. As linguagens não são o que as pessos pensam que são. Não vou entrar em todos os detalhes, correndo o risco de um entendimento errado pela falta de detalhes, mas não é o foco aqui.

Rust, dentro da normalidade, roda código binário igual C++. Não o mesmo código binário, até porque o código fonte nunca é o mesmo, e as linguagens possuem regras muito diferentes, mesmo um cósigo simples, pouco mais que um Hello World, que é semanticamente idêntico nas duas linguagens gerarão binários bem diferentes. Roda igual C, Delphi, Go, C#, em Java em última análise, e várias outras linguagens. Tem Python que faz isso, mas "ninguém" usa.

Links úteis: