aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/orphaned/hello_world_rust/index.html
blob: baef01d1611cafa8cfccc0ebb061659873bc552c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
---
title: Hello World Rust
slug: orphaned/Hello_World_Rust
tags:
  - Performance
  - baixo-nível
  - brazil
  - compilada
  - compile
  - hello world
  - low-level
  - programar
  - programming
  - pt-br
  - rust
  - rustontherocks
  - servo
original_slug: Hello_World_Rust
---
<h2 id="Hello_World!" style="margin-bottom: 0in; border-width: medium medium 1px; border-style: none none solid; border-color: -moz-use-text-color -moz-use-text-color rgb(0, 0, 0); padding: 0in 0in 0.03in; font-style: normal; line-height: 100%;"><font color="#000000"><font face="Cantarell"><font size="5"><strong><span style="background: transparent;">Hello, World!</span></strong></font></font></font></h2>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Que tal  escrevermos um clássico programa em Rust? </span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Uma coisa legal sobre começar com programas simples é o fato de que você percebe que o seu compilador não está somente instalado como também está funcionando propriamente. </span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">A primeira coisa que nós precisamos fazer é criar um local para que possamos organizar nossos códigos. Eu gosto de criar uma pasta <font color="#cc0000">projetos</font> dentro da minha pasta <font color="#cc0000">home</font>. Lembrando que o Rust não se importa com o local onde o seu código se encontra.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Isso nos leva a uma outro detalhe: eu estou  assumindo que você já tem uma certa familiaridade com a linha de comando. Se você preferir utilizar uma IDE ao invés da linha de comando, você talvez queira dar uma olhada no SolidOak(<a href="https://github.com/oakes/SolidOak">https://github.com/oakes/SolidOak</a> ), ou qualquer plugin disponível para a sua IDE preferida. Existem por aí um bom número de extensões com qualidade variável em desenvolvimento por parte da comunidade. A equipe Rust também desenvolve plugins para vários editores(<a href="https://github.com/rust-lang/rust/blob/master/src/etc/CONFIGS.md">https://github.com/rust-lang/rust/blob/master/src/etc/CONFIGS.md</a> ). </span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Dito isso, vamos criar um deretório dentro da nossa pasta projetos.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ mkdir ~/projects</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ cd ~/projects</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ mkdir hello_world</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ cd hello_world</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Caso você esteja no Windows e não esteja utilizando PowerShell, talvez o <font color="#cc0000">~</font> não funcione. Consulte a documentação do seu shell para mais detalhes.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Vamos criar um arquivo para o nosso código. Nós chamamos nosso arquivo de <font color="#cc0000">main.rs</font>. Arquivos Rust são sempre terminados com a extensão <font color="#cc0000">.rs</font>. Caso você esteja utilizando mais de uma palavra no nome de seu arquivo, é preferível que você utilize o underscore/underline: <font color="#cc0000">hello_world.rs</font> ao invés de concatenar tudo como: <font color="#cc0000">helloword.rs</font>.</span></font></font></font> No mundo rust isso é chamado de snake_case.</p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Agora que você já tem o seu arquivo abra-o e digite o seguinte código:</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;"><em>fn main() {</em></span></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">println!("Hello, world!");</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">}</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Salve o arquivo e digite o seguinte no seu terminal:</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ rustc main.rs</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">$ ./main # ou main.exe no Windows</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">Hello, world!</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Sucesso!</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Agora, como diria Jack: "Vamos por partes...".</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">fn main() {</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><em><span style="background: transparent;">}</span></em></font></font></font></p>

<p style="margin-bottom: 0in; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Estas linhas definem uma função em Rust. A função <font color="#cc0000">main</font> é de fato especial: ela é o começo de todo programa feito em Rust. Essas primeiras linhas dizem “Eu estou declarando uma função chamada <font color="#cc0000">main</font> que não possui nenhum argumento e não retorna valor nenhum.” Caso tivesse argumentos eles estariam dentro dos parênteses (<font color="#cc0000">(</font> <font color="#cc0000">)</font>), e como não estamos retornando nada nós podemos omitir o tipo de retorno inteiramente. Falaremos mais sobre isso em tutoriais futuros.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Você também deve notar que a função é envolta por chaves (<font color="#cc0000">{ }</font>). Rust exige chaves em volta do escopo das funções. Também é considerado uma boa prática abrir chaves na mesma linha onde foi declarada a função.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Próxima linha:</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;"><em>println!("Hello, world!");</em></span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Esta linha faz todo o trabalho do nosso pequeno programa. Existem inúmeros detalhes importantes nela. Lembre-se de configurar o seu editor para que utilize quatro espaços para fazer a identação. É disponibilizado várias configurações para alguns editores (<a href="https://github.com/rust-lang/rust/blob/master/src/etc/CONFIGS.md">https://github.com/rust-lang/rust/blob/master/src/etc/CONFIGS.md</a>).</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">O segundo ponto é a parte do <strong>println!( )</strong>. </span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Este trecho de código chama uma<strong> macro</strong>(<a href="http://doc.rust-lang.org/book/macros.html">http://doc.rust-lang.org/book/macros.html</a>) Rust, que é a forma como Rust realiza a metaprogramação. Se ao invés de uma macro fosse uma função, teríamos algo como: println( ). Para o nosso propósito aqui, nós não precisamos nos preocupar com essa diferença. Apenas saiba que algumas vezes você irá ver ' ! ', o que indica uma chamada de macro e não uma chamada de função normal. Rust implementa println!( ) como uma macro e não como uma simples função por alguns bons motivos, contudo, como dito, não se faz necessário explicar agora. </span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="background: transparent;">Uma última ressalva:se você já usou macros em outras linguagens como C/C++, você verá que as macros do Rust são bastante diferentes. Não fique assustado com as macros. Nós vamos entendendo melhor ao longo dos próximos tutoriais.</span></font></font></font></p>

<p style="margin-bottom: 0in; font-style: normal; font-weight: normal; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><font color="#000000"><font face="DejaVu Serif, serif"><font size="3"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">Próximo, </span></span></span></font></font></font><code><font color="#cc0000">"Hello, world!" </font></code><code><font color="#000000"><font face="DejaVu Serif, serif">é uma 'string'. Strings são geralmente bastante complicadas em uma 'system language', e ainda mais, temos uma string estáticamente alocada. Caso você queira ler mais sobre alocação, confira este link: <a href="http://doc.rust-lang.org/book/the-stack-and-the-heap.html">http://doc.rust-lang.org/book/the-stack-and-the-heap.html</a>, mas por hora não se faz necessário. </font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif">Voltando, nós passamos a nossa string como um argumento para a macro </font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif">println!</font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif">, que por sua vez imprime na tela a nossa 'string'. Fácil!</font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif">Finalmente, a nossa linha de código termina com um ponto e vírgula ( </font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif">;</font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"> ). Rust é uma linguagem orientada à expressões, o que significa que a maior parte da linguagem são expressões e não apenas declarações. O </font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif">;</font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"> é usado para indicar que uma expressão terminou e que a próxima está prestes a começar. A grande maioria das linhas de código em Rust acabarão com </font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif">;</font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif">.</font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif">Por fim, compilar e executar. </font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif">Para compilar usamos o nosso compilador </font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif">rustc</font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"> e em seguida passamos o nome do nosso arquivo:</font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em>$ rustc main.rs</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">Caso você tenha experiência com C/C++ verá que existe semelhança com o </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">gcc</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;"> e </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">clang</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">. Após o comando, Rust gerará um binário executável. Podemos vê-lo utilizando o comando </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">ls</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">:</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em>$ ls</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em><strong>main</strong></em></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><em>main.rs</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">No Windows:</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em>$ dir</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em><strong>main.exe</strong></em></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><em>main.rs</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">Agora temos dois arquivos, o nosso código com a extensão </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">.rs </span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">e o executável(</span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">main.exe</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;"> para Windows ou </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">main</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;"> para os demais).</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><em>$ ./main # or main.exe on Windows</em></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">O comando acima exibe a nossa string </span></font></font></code><code><font color="#cc0000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">hello, world!</span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;"> no terminal.</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">Caso você venha de alguma linguagem dinâmica como Ruby, Python ou Javascript épossível que você nunca tenha feito esses dois passos anteriores em separado. </span></font></font></code><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">Rust é uma linguagem “anteriormente compilada”, o que significa que você pode compilar um programa e compartilhar com alguém que não tenha Rust instalado e essa pessoa irá conseguir executar numa boa. Agora, se você compartilhar um arquivo .rb ou .py ou .js a pessoa com quem você compartilhou precisará ter Ruby/Python/Javascript instalado, em contra-partida com estas linguagens você compila e roda em um único comando. Tudo é uma questão de escolha quando se trata de padrões de linguagem e Rust fez as dele.</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"><code><font color="#000000"><font face="DejaVu Serif, serif"><span style="font-style: normal;">Parabéns! Você oficialmente escreveu seu primeiro programa em Rust. Isso lhe torna um programador Rust! Bem-vindo!!!</span></font></font></code></p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>

<p style="margin-bottom: 0in; line-height: 100%;"> </p>