RUST

Linguagem de programação desenvolvida pela Mozilla Research.

O que é RUST?

Logo Rust

Rust é uma linguagem de programação open-source (código aberto) que se concentra em velocidade, segurança de memória e paralelismo. O uso do Rust tem sido focado em criar uma ampla gama de novos aplicativos de software como, sistemas operacionais, motores de jogos, sistema de arquivos, componentes de navegador e motores de simulação para realidade virtual.


A linguagem possui uma comunidade voluntária ativa e dedicada sempre mantendo melhorias em sua base de código. Rust a princípio foi investido pela Mozilla e a própria utiliza a linguagem em muitos produtos e iniciativas. Rust que foi construído do 0 é uma linguagem de programação expressiva e intuitiva como uma linguagem de alto nível e com muito controle e desempenho como uma de baixo nível. Apresenta modernidade, segurança, evita falhas de segmentação e garante rápido desenvolvimento e desempenho assertivo.

fonte: Documentação do Mozilla

Origem

A linguagem apareceu como um projeto pessoal de Graydon Hoare, empregado da Mozilla. A organização começou a apoiar o projeto em 2009 e anunciou-o em 2010. No mesmo ano, os esforços mudaram do compilador original (escrito em OCaml) para um auto-hospedado feito em Rust. Conhecido por rustc, conseguiu compilar-se pela primeira vez em 2011 e utiliza o LLVM como back-end. Foi lançada pela primeira vez uma versão numerada pré-alfa em 2012. Rust 1.0, a primeira versão estável, foi lançada em 15 de Maio de 2015.

Exemplo Prático

comandos Exemplo Hello World rodando o programa

Comando para Windows

É feito primeiro a linha de comando e após isso escrito o programa em Rust, e para então executar ele.

println!("Hello, world!");

Explicação da linha: Esta linha faz todo o trabalho neste pequeno programa: imprime texto na tela. Há quatro detalhes importantes a serem observados aqui.
1)Primeiro, o estilo Rust é recuar com quatro espaços, não uma tabulação.
-----------
2)Segundo, println! chama uma macro Rust. Se fosse chamada uma função, ela seria inserida como println (sem o !). Discutiremos Rust macros com mais detalhes no Capítulo 19. Por enquanto, você só precisa saber que usar um ! significa que você está chamando uma macro em vez de uma função normal.
-----------
3)Terceiro, você vê a string "Hello, world!". Passamos essa string como argumento para println!, e a string é impressa na tela.
-----------
4)Quarto, terminamos a linha com um ponto-e-vírgula (;), que indica que essa expressão acabou e a próxima está pronta para começar. A maioria das linhas do código Rust termina com um ponto e vírgula.

-----------

Foi considerada pelo público a linguagem "mais amada" por cinco anos consecutivos, de acordo com pesquisas conduzidas pelo site Stack Overflow de 2016 a 2020, e está entre as 25 linguagens mais populares, de acordo com pesquisas conduzidas pela RedMonk desde 2018.

Rust se baseia nos seguintes princípios: segurança sem coletor de lixo, concorrência sem disputa de dados e abstração sem overhead. Estes princípios fazem com que Rust seja rápida para ser usada em aplicações de baixo nível como o motor de renderização Servo e também prática para projetos de alto nível.

Dropbox - vários componentes do sistema de armazenamento de arquivos foi escrito em Rust para projeto de otimização na eficiência de datacenters.
Yelp - Rust foi usado para desenvolver um framework de testes A/B em tempo real, os testes vão desde UX até infraestrutura interna. Rust foi usado por ser mais rápido e seguro que C.
Discord - O serviço de chat focado em jogadores eletronicos utiliza Rust em seu servidor e em seu aplicativo.
Mozilla Firefox - Sendo Rust a linguagem da Mozilla a linguagem foi utilizada em seu Gecko e Servo, que são seus motores de renderização tanto direto quanto experimental.
OpenDNS - O serviço de DNS da empresa conta com o Rust aprimoramento do seu servidor
npm - O serviço de hospedagem de dependências para Node.js utiliza do Rust para lidar com os gargalos associados à CPU, como explicado no estudo do uso da ferramenta: https://www.rust-lang.org/static/pdfs/Rust-npm-Whitepaper.pdf.
Microsoft Windows - O sistema operacional conta com Rust implementando ca composição de alguns de seus componentes.

Rust possui um literal para representar iteradores, e traz em sua biblioteca padrão métodos para transformá-los, usando clausuras. No exemplo a seguir o programa lista os 10 primeiros números primos:

Exemplo de codigo

Ainda há muito o que se fazer e desenvolver em Rust; documentação e tópicos em fóruns estão em constante mudança.

Documentação

A documentação é uma alternativa dentro de softwares e linguagens que facilitam o método de uso e o entendimento a fundo do uso da linguagem em questão, atribuindo também livros e edição e bibliotecas que incorporam a linguagem.
Para fomentar melhor o assunto é interessante observarmos a biblioteca principal do Rust (a std) e aprender como lê-la.
A documentação da biblioteca padrão foi desenvolvida pensando em uma leitura casual, sem o intuito de ler a fio todas as informações contidas nela, você procura aquilo que achar mais interessante e encontra justamente o que acredita ser mais interessante.
A documentação é criada baseada em módulos e cada módulo tem sua documentação específica com exemplos e utilização para conhecimento prático de solução, esses módulos exibem a função da ferramenta.
Em relação aos tipos de dados, existe um tópico onde os métodos implícitos dos tipos primitivos são abordados, da qual pode gerar confusão em leitura da observação. Rust é uma linguagem com tipagem estática, isso significa que ela deve conhecer os tipos de todas as variáveis ​​em tempo de compilação. O compilador geralmente pode inferir que tipo queremos usar com base no valor e como o usamos. A confusão entra pelo seguinte motivo:
Os tipos primitivos são implementados pelo compilados, enquanto a biblioteca padrão implementa métodos diretamente nos tipos primitivos (e é a única biblioteca que faz isso).


A biblioteca padrão exporta muitos módulos com o mesmo nome de tipos primitivos . Eles definem itens adicionais relacionados ao tipo primitivo, mas não os métodos importantes.
A documentação também possui a definição do prelúdio do Rust, onde é um ótimo ponto de início visto que aborda uma coleção de itens que são importados para cada módulo de cada observação da documentação. Também é possível verificar algumas das macros contidas nesta documentação, não todas pois algumas são implementadas direto pelo compilador e a biblioteca identifica apenas os contidos nela, que assim como o prelúdio, já é importado em cada módulo.

É possivel visualizar o guia de edições, que aborda as alterações obtidas no rust para compreender a maneira de escrita do código em diferentes versões do Rust, visto em: https://doc.rust-lang.org/edition-guide/index.html

Tipos Primitivos

- Matriz: Uma matriz de tamanho fixo, denotada [T; N], para o tipo de elemento, T, e o tamanho constante de tempo de compilação não negativo, N.
- Bool: Do tipo booleano.
- Char: Um tipo de personagem.
- f32 Um tipo de ponto flutuante de 32 bits (especificamente, o tipo "binário32" definido no IEEE 754-2008).

Módulos

- Alloc: APIs de alocação de memória
- Any: Este módulo implementa o traço Any, que permite digitação dinâmica de qualquer tipo estático através da reflexão do tempo de execução.
- Ascii: Operações em strings e caracteres ASCII.
- Error: Características para trabalhar com erros.

Macros

- assert: Afirma que uma expressão booleana retorna true em tempo de execução.
- assert_eq: Afirma que duas expressões são iguais uma à outra (utilizando ParcialEq).
- assert_ne: Afirma que duas expressões não são iguais umas às outras (utilizando ParcialEq). - compile_error: Faz com que a compilação falhe com a mensagem de erro dada quando encontrada.
- Error: Características para trabalhar com erros.
Ver documentação.

VEJA TAMBÉM
-Livro sobre o cargo (gerenciamento de pacote e sistema de compilação do Rust)
-Livro sobre o rustdoc (como criar documentações para bibliotecas próprias)
-Livro sobre o rustc (ajustes disponíveis no compilador)
-Informações sobre índice de erro de compilação

Ver outros Rea's