<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Rust - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/rust/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/rust/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Mon, 20 Jan 2025 19:24:10 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>Operadores em linguagem Rust</title>
		<link>https://www.bosontreinamentos.com.br/rust/operadores-em-linguagem-rust/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/operadores-em-linguagem-rust/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 18 Dec 2024 10:48:23 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20686</guid>

					<description><![CDATA[<p>Operadores em linguagem Rust Em programação, um operador é um símbolo define uma função que será realizada sobre os dados em uma aplicação. Os dados sobre os quais esses operadores atuam são chamados de operandos. Consideremos a seguinte expressão: 9 + 10 = 19 Aqui, os valores 9 e 10 são os operandos, enquanto os sinais + e = são os operadores. Já o valor 19 é o resultado da operação realizada &#8211; no caso, uma operação aritmética de soma de dois números inteiros. A linguagem Rust possui suporte a diversos tipos de operadores, e os principais operadores primários podem ser classificados como: Aritméticos Bitwise (Operadores bit-a-bit) Relacionais ou de Comparação Lógicos Vejamos quais são esses operadores, suas funções e exemplos de uso de cada um deles. Operadores Aritméticos Os operadores aritméticos são empregados na realização de cálculos aritméticos simples, usando as quatro operações básicas da matemática mais a operação como o módulo. A tabela a seguir mostra os operadores aritméticos com sua descrição, e um exemplo de uso de cada. Nos exemplos, vamos imaginar que os valores em duas variáveis a e b são 10 e 5, respectivamente. Operador Descrição Exemplo + Retorna a soma dos operandos a + [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/operadores-em-linguagem-rust/">Operadores em linguagem Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Operadores em linguagem Rust</h1>
<p>Em programação, um <strong>operador</strong> é um símbolo define uma função que será realizada sobre os dados em uma aplicação. Os dados sobre os quais esses operadores atuam são chamados de <em>operandos</em>.</p>
<p>Consideremos a seguinte expressão:</p>
<pre><span style="font-size: 18pt;"><strong>9 + 10 = 19</strong></span></pre>
<p>Aqui, os valores 9 e 10 são os operandos, enquanto os sinais + e = são os operadores. Já o valor 19 é o resultado da operação realizada &#8211; no caso, uma operação aritmética de soma de dois números inteiros.</p>
<p>A linguagem Rust possui suporte a diversos tipos de operadores, e os principais operadores primários podem ser classificados como:</p>
<ul>
<li>Aritméticos</li>
<li>Bitwise (Operadores bit-a-bit)</li>
<li>Relacionais ou de Comparação</li>
<li>Lógicos</li>
</ul>
<p>Vejamos quais são esses operadores, suas funções e exemplos de uso de cada um deles.</p>
<h2>Operadores Aritméticos</h2>
<p>Os operadores aritméticos são empregados na realização de cálculos aritméticos simples, usando as quatro operações básicas da matemática mais a operação como o módulo.</p>
<p>A tabela a seguir mostra os operadores aritméticos com sua descrição, e um exemplo de uso de cada. Nos exemplos, vamos imaginar que os valores em duas variáveis <code>a</code> e <code>b</code> são 10 e 5, respectivamente.</p>
<table style="border-collapse: collapse; width: 100%; font-size: 16px; text-align: left;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Operador</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Descrição</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">+</td>
<td style="border: 1px solid #ddd; padding: 8px;">Retorna a soma dos operandos</td>
<td style="border: 1px solid #ddd; padding: 8px;">a + b é 15</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="border: 1px solid #ddd; padding: 8px;">&#8211;</td>
<td style="border: 1px solid #ddd; padding: 8px;">Retorna a diferença dos valores</td>
<td style="border: 1px solid #ddd; padding: 8px;">a &#8211; b é 5</td>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">*</td>
<td style="border: 1px solid #ddd; padding: 8px;">Retorna o produto dos valores</td>
<td style="border: 1px solid #ddd; padding: 8px;">a * b é 50</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="border: 1px solid #ddd; padding: 8px;">/</td>
<td style="border: 1px solid #ddd; padding: 8px;">Realiza a divisão e retorna o quociente</td>
<td style="border: 1px solid #ddd; padding: 8px;">a / b é 2</td>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">%</td>
<td style="border: 1px solid #ddd; padding: 8px;">Realiza a divisão e retorna o restante</td>
<td style="border: 1px solid #ddd; padding: 8px;">a % b é 0</td>
</tr>
</tbody>
</table>
<p><strong>Nota:</strong> Os operadores de incremento e decremento <code>++</code> e <code>--</code> não são suportados em Rust. Vejamos agora exemplos de código que usam esses operadores.</p>
<p><strong>Exemplo de uso de operadores aritméticos</strong></p>
<pre><strong>fn main() {</strong>
<strong>  let a = 10;</strong>
<strong>  let b = 5;</strong>
<strong>  println!("Soma: {}", a + b); <span style="color: #008000;">// Soma</span></strong>
<strong>  println!("Subtração: {}", a - b); <span style="color: #008000;">// Subtração</span></strong>
<strong>  println!("Multiplicação: {}", a * b); <span style="color: #008000;">// Multiplicação</span></strong>
<strong>  println!("Divisão: {}", a / b); <span style="color: #008000;">// Divisão</span></strong>
<strong>  println!("Módulo: {}", a % b); <span style="color: #008000;">// Resto da divisão inteira</span></strong>
<strong>}</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;"><strong>Soma: 15</strong></span>
<span style="color: #000000;"><strong>Subtração: 5</strong></span>
<span style="color: #000000;"><strong>Multiplicação: 50</strong></span>
<span style="color: #000000;"><strong>Divisão: 2</strong></span>
<span style="color: #000000;"><strong>Módulo: 0</strong></span></pre>
<h2>Operadores Relacionais</h2>
<p>Os operadores relacionais testam ou definem o tipo de relação entre duas entidades. São usados para comparar dois ou mais valores, sendo também conhecidos como operadores de comparação, e retornam sempre um valor booleano (<code>true</code> ou <code>false</code>).</p>
<p>A tabela a seguir mostra os operadores relacionais com sua descrição, e um exemplo de uso de cada. Vamos assumir os valores de variáveis <code>A = 10</code> e <code>B = 20</code> nos exemplos.</p>
<table style="border-collapse: collapse; width: 100%; font-size: 16px; text-align: left;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Operador</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Descrição</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">&gt;</td>
<td style="border: 1px solid #ddd; padding: 8px;">Maior que</td>
<td style="border: 1px solid #ddd; padding: 8px;">(A &gt; B) é False</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="border: 1px solid #ddd; padding: 8px;">&lt;</td>
<td style="border: 1px solid #ddd; padding: 8px;">Menor que</td>
<td style="border: 1px solid #ddd; padding: 8px;">(A &lt; B) é True</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">&gt;=</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Maior ou igual a</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A &gt;= B) é False</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">&lt;=</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Menor ou igual a</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A &lt;= B) é True</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">==</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Igual a</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A == B) é False</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">!=</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Diferente de</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A != B) é True</td>
</tr>
</tbody>
</table>
<p>Vejamos agora exemplos de código que usam os operadores de comparação / relacionais.</p>
<p><strong>Exemplo de uso de operadores relacionais</strong></p>
<pre><strong>fn main() {</strong>
<strong>  let a = 10;</strong>
<strong>  let b = 20;</strong>
<strong>  println!("a vale {a} e b vale {b}");</strong>
<strong>  println!("{a} é maior que {b}? {}", a &gt; b);</strong>
<strong>  println!("{a} é menor que {b} ? {}", a &lt; b);</strong>
<strong>  println!("{a} é maior ou igual a {b} ? {}", a &gt;= b);</strong>
<strong>  println!("{a} é menor ou igual a {b} ? {}", a &lt;= b);</strong>
<strong>  println!("{a} é igual a {b} ? {}", a == b);</strong>
<strong>  println!("{a} é diferente de {b} ? {}", a != b);</strong>
<strong>}</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;"><strong>a vale 10 e b vale 20</strong></span>
<span style="color: #000000;"><strong>a é maior que b? false</strong></span>
<span style="color: #000000;"><strong>a é menor que b? true</strong></span>
<span style="color: #000000;"><strong>a é maior ou igual a b? false</strong></span>
<span style="color: #000000;"><strong>a é menor ou igual a b? true</strong></span>
<span style="color: #000000;"><strong>a é igual a ? false</strong></span>
<span style="color: #000000;"><strong>a é diferente de b? true</strong></span></pre>
<h2>Operadores Lógicos</h2>
<p>Os operadores lógicos são usados para combinar duas ou mais condições e retornam um valor booleano, que é True (verdadeiro) ou False (falso). Vamos assumir novamente os valores <code>A = 10</code> e <code>B = 20</code>.</p>
<table style="border-collapse: collapse; width: 100%; font-size: 16px; text-align: left;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Operador</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Descrição</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">&amp;&amp;</td>
<td style="border: 1px solid #ddd; padding: 8px;">Retorna <code>true</code> se todas as condições forem verdadeiras; se uma das condições for falsa, retorna false.</td>
<td style="border: 1px solid #ddd; padding: 8px;">(A &gt; 10 &amp;&amp; B &gt; 10) é False</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">||</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Retorna <code>true</code> se pelo menos uma das condições for <code>true;</code>somente retorna false se todas as condições forem falsas.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A &gt; 10 || B &gt; 10) é True</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">!</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Operador unário inversor (age sobre um único operando). Retorna o inverso do valor lógico do operando (que pode ser uma expressão): se o valor for True, retorna False, e se for False, retorna True.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">!(A &gt; 10) é True</td>
</tr>
</tbody>
</table>
<p><strong>Exemplo de uso de operadores lógicos</strong></p>
<pre><strong>fn main() {</strong>
<strong>  let a = 10;</strong>
<strong>  let b = 20;</strong>
<strong>  println!("a vale {a} e b vale {b}");</strong>
<strong>  println!("AND lógico: {}", a &gt; 5 &amp;&amp; b &gt; 15); <span style="color: #339966;">// True se ambas as condições forem verdadeiras</span></strong>
<strong>  println!("OR lógico: {}", a &gt; 15 || b &gt; 15); <span style="color: #339966;">// True se ao menos uma condição for verdadeira</span></strong>
<strong>  println!("NOT lógico: {}", !(a &gt; 15)); <span style="color: #339966;">// Inverte o resultado</span></strong>
<strong>}</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;"><strong>a vale 10 e b vale 20</strong></span>
<span style="color: #000000;"><strong>AND lógico: true</strong></span>
<span style="color: #000000;"><strong>OR lógico: true</strong></span>
<span style="color: #000000;"><strong>NOT lógico: true</strong></span></pre>
<h2>Operadores Bitwise e de Deslocamento de Bits</h2>
<p>Os operadores de bit-a-bit ou <em>bitwise</em> realizam operações diretamente sobre os bits de dois ou mais números. Em vez de trabalhar com valores booleanos (verdadeiro / falso), eles trabalham a nível de bit, o que significa que cada bit de um número é comparado ao bit correspondente do outro número.</p>
<p>Esses operadores são muito usados em programação para manipular valores binários, criar máscaras de bits, realizar otimizações em algoritmos e resolver problemas relacionados à lógica binária.</p>
<p>Já os os operadores de deslocamento de bits (&lt;&lt; e &gt;&gt;), ou operadores <em>bitwise shift</em> são usados para mover os bits de um número inteiro para a esquerda ou para a direita. São úteis em muitas situações, como manipulação de dados de baixo nível, otimizações em cálculos e implementação de algoritmos matemáticos.</p>
<p>Sejam as variáveis <code>A = 2</code> e <code>B = 3:</code></p>
<table style="border-collapse: collapse; width: 100%; font-size: 16px; text-align: left;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Operador</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Descrição</th>
<th style="border: 1px solid #ddd; padding: 8px; background-color: #f4f4f4;">Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">&amp;</td>
<td style="border: 1px solid #ddd; padding: 8px;">AND bit a bit. Somente retorna 1 se todas os bits de entrada dos operandos forem iguais a 1.</td>
<td style="border: 1px solid #ddd; padding: 8px;">A &amp; B = 2</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">|</td>
<td style="border: 1px solid #dddddd; padding: 8px;">OR bit a bit. Somente retorna 0 se todos os bits de operandos forem iguais a 0.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A | B) é 3</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">^</td>
<td style="border: 1px solid #dddddd; padding: 8px;">XOR bit a bit. Retorna 0 se os bits de entrada forem iguais, e retorna 1 se forem diferentes.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A ^ B) é 1</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">~</td>
<td style="border: 1px solid #dddddd; padding: 8px;">NOT bit a bit. Inverte a condição de entrada: 0 se torna 1, e 1 se torna 0. Trata-se de um operador unário inversor.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(~B) é -4</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">&lt;&lt;</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Deslocamento à esquerda. Move os bits de um número para a esquerda por um número especificado de posições.<br />
A cada posição que os bits são movidos, o valor do número é multiplicado por 2.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A &lt;&lt; 1) é 4</td>
</tr>
<tr>
<td style="border: 1px solid #dddddd; padding: 8px;">&gt;&gt;</td>
<td style="border: 1px solid #dddddd; padding: 8px;">Deslocamento à direita. Move os bits de um número para a direita por um número especificado de posições.<br />
A cada posição que os bits são movidos, o valor do número é dividido por 2, desprezando o resto.</td>
<td style="border: 1px solid #dddddd; padding: 8px;">(A &gt;&gt; 1) é 1</td>
</tr>
</tbody>
</table>
<p>O operador de deslocamento à esquerda (&lt;&lt;), na prática, multiplica o número por 2 a cada deslocamento. Já o operador de deslocamento à direita (&gt;&gt;) divide o número por 2 a cada deslocamento, descartando a parte fracionária.</p>
<p><strong>Exemplo de uso de operadores bit a bit</strong></p>
<pre><strong>fn main() {</strong>
<strong>  let a: u8 = 2; <span style="color: #339966;">// 0000_0010 em binário</span></strong>
<strong>  let b: u8 = 3; <span style="color: #339966;">// 0000_0011 em binário</span></strong>
<strong>  println!("a vale {a} e b vale {b}");</strong>
<strong>  println!("AND bitwise: {}", a &amp; b); <span style="color: #339966;">// 0000_0010</span></strong>
<strong>  println!("OR bitwise: {}", a | b); <span style="color: #339966;">// 0000_0011</span></strong>
<strong>  println!("XOR bitwise: {}", a ^ b); <span style="color: #339966;">// 0000_0001</span></strong>
<strong>  println!("NOT bitwise: {}", !b); <span style="color: #339966;">// Inversão de todos os bits</span></strong>
<strong>  println!("Shift à esquerda: {}", a &lt;&lt; 1); <span style="color: #339966;">// Desloca os bits para a esquerda</span></strong>
<strong>  println!("Shift à direita: {}", a &gt;&gt; 1); <span style="color: #339966;">// Desloca os bits para a direita</span></strong>
<strong>}</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;"><strong>a vale 2 e b vale 3</strong></span>
<span style="color: #000000;"><strong>AND bitwise: 2</strong></span>
<span style="color: #000000;"><strong>OR bitwise: 3</strong></span>
<span style="color: #000000;"><strong>XOR bitwise: 1</strong></span>
<span style="color: #000000;"><strong>NOT bitwise: 252</strong></span>
<span style="color: #000000;"><strong>Shift à esquerda: 4</strong></span>
<span style="color: #000000;"><strong>Shift à direita: 1</strong></span></pre>
<h2>Conclusão</h2>
<p>Neste artigo vimos quais são os principais operadores utilizados em linguagem Rust, sua importância e utilidade, e alguns exemplos de uso de cada um deles. Nos próximos tutoriais vamos usar esses operadores para criar programas mais complexos, usando outras estruturas de programação como laços de repetição, decisão condicional e arrays, entre outras.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/operadores-em-linguagem-rust/">Operadores em linguagem Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/operadores-em-linguagem-rust/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Controle Condicional em Rust &#8211; if / else if / else</title>
		<link>https://www.bosontreinamentos.com.br/rust/controle-condicional-em-rust-if-else-if-else/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/controle-condicional-em-rust-if-else-if-else/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 28 Apr 2023 12:00:17 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19282</guid>

					<description><![CDATA[<p>Controle Condicional em Rust As estruturas de decisão condicional são ferramentas muito úteis em programação. As empregamos para criar código que tome decisões e execute diferentes ações de acordo com condições de teste especificadas. Assim como ocorre com as outras linguagens de programação, a linguagem Rust também possui estruturas de controle condicional, e para tal emprega as instruções if / else. Podemos criar um condicional simples com a instrução if, condicional composto com if / else, ou ainda encadear estruturas condicionais por meio a instrução else if. Sintaxe Para um condicional simples: if condição: bloco de código se condição true Para um condicional composto: if condição: bloco de código se condição true else: bloco de código se condição false Para um condicional encadeado: if condição_1: bloco de código e condição_1 true else if condição_2: bloco de código se condição_1 false e condição_2 true else: bloco de código se todas as condições false Exemplo Vejamos um exemplo. fn main() { let x: u32 = 5; if x &#62; 5 { println!("{} é maior que 5", x); } else if x &#60; 5 { println!("{} é menor que 5", x); } else { println!("{} é igual a 5", x); } } Este [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/controle-condicional-em-rust-if-else-if-else/">Controle Condicional em Rust &#8211; if / else if / else</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Controle Condicional em Rust</h2>
<p>As estruturas de decisão condicional são ferramentas muito úteis em programação. As empregamos para criar código que tome decisões e execute diferentes ações de acordo com condições de teste especificadas.</p>
<p>Assim como ocorre com as outras linguagens de programação, a linguagem Rust também possui estruturas de controle condicional, e para tal emprega as instruções <strong>if / else</strong>.</p>
<p>Podemos criar um condicional simples com a instrução<em><strong> if</strong></em>, condicional composto com <em><strong>if / else</strong></em>, ou ainda encadear estruturas condicionais por meio a instrução<em><strong> else if</strong></em>.</p>
<h3>Sintaxe</h3>
<p>Para um <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/10-logica-de-programacao-desvio-condicional-simples-se-entao/">condicional simples</a>:</p>
<pre><strong>if condição:</strong>
<strong>    bloco de código se condição true</strong></pre>
<p>Para um <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/11-logica-de-programacao-desvio-condicional-composto-se-entao-senao/">condicional composto</a>:</p>
<pre><strong>if condição:</strong>
<strong>    bloco de código se condição true</strong>
<strong>else:</strong>
<strong>    bloco de código se condição false</strong></pre>
<p>Para um <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/12-logica-de-programacao-desvio-condicional-aninhado-se-entao-senao-se/">condicional encadeado</a>:</p>
<pre><strong>if condição_1:</strong>
<strong>    bloco de código e condição_1 true</strong>
<strong>else if condição_2:</strong>
<strong>    bloco de código se condição_1 false e condição_2 true</strong>
<strong>else:</strong>
<strong>    bloco de código se todas as condições false</strong></pre>
<h3>Exemplo</h3>
<p>Vejamos um exemplo.</p>
<pre><strong>fn main() {</strong>
<strong>  let x: u32 = 5;</strong>
<strong>  if x &gt; 5 {</strong>
<strong>    println!("{} é maior que 5", x);</strong>
<strong>  }</strong>
<strong>  else if x &lt; 5 {</strong>
<strong>    println!("{} é menor que 5", x);</strong>
<strong>  }</strong>
<strong>  else {</strong>
<strong>    println!("{} é igual a 5", x);</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<p>Este código verifica se a variável x é maior, menor ou igual a 5 e exibe uma mensagem correspondente na saída padrão. Alterando o valor de x, a mensagem exibida será diferente em cada caso, sendo decidida pela avaliação das expressões (condições) testadas nos blocos condicionais if e else if.</p>
<p>É isso aí! nas próximas lições vamos explorar as estruturas de repetição (laços / loops) em Rust.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/controle-condicional-em-rust-if-else-if-else/">Controle Condicional em Rust &#8211; if / else if / else</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/controle-condicional-em-rust-if-else-if-else/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Declaração e Atribuição de Variáveis em Rust</title>
		<link>https://www.bosontreinamentos.com.br/rust/declaracao-e-atribuicao-de-variaveis-em-rust/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/declaracao-e-atribuicao-de-variaveis-em-rust/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 27 Apr 2023 11:51:55 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19280</guid>

					<description><![CDATA[<p>Declaração e Atribuição de Variáveis em Rust Variável é um local reservado na memória RAM do computador utilizado para armazenar de forma temporária os dados que são empregados pelo programa em execução. Assim, as variáveis em Rust são elementos fundamentais da linguagem e permitem armazenar valores na memória do computador para uso posterior. Ao contrário de algumas outras linguagens, o Rust possui um sistema de tipagem forte e estática, o que significa que o tipo de uma variável deve ser especificado durante a declaração e não pode ser alterado posteriormente. Sintaxe A declaração de variáveis em Rust é feita usando a palavra-chave let. Por exemplo: let x = 5; let y = 10; let z = x + y; println!("O valor de z é {}", z); Este trecho código declara três variáveis x, y e z, onde x e y são atribuídos os valores 5 e 10, respectivamente. A variável z é inicializada com a soma de x e y. O comando println!(&#8220;O valor de z é {}&#8221;, z); exibe o valor da variável z na saída padrão. Variáveis mutáveis e imutáveis Na verdade, existem duas formas básicas de declaração de variáveis em Rust: as variáveis podem ser mutáveis ou imutáveis. [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/declaracao-e-atribuicao-de-variaveis-em-rust/">Declaração e Atribuição de Variáveis em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Declaração e Atribuição de Variáveis em Rust</h2>
<p><strong><em>Variável</em></strong> é um local reservado na memória RAM do computador utilizado para armazenar de forma temporária os dados que são empregados pelo programa em execução.</p>
<p>Assim, as variáveis em Rust são elementos fundamentais da linguagem e permitem armazenar valores na memória do computador para uso posterior.</p>
<p>Ao contrário de algumas outras linguagens, o Rust possui um sistema de tipagem forte e estática, o que significa que o tipo de uma variável deve ser especificado durante a declaração e não pode ser alterado posteriormente.</p>
<h3>Sintaxe</h3>
<p>A declaração de variáveis em Rust é feita usando a palavra-chave <em><strong>let</strong></em>. Por exemplo:</p>
<pre><strong>let x = 5;</strong>
<strong>let y = 10;</strong>
<strong>let z = x + y;</strong>
<strong>println!("O valor de z é {}", z);</strong></pre>
<p>Este trecho código declara três variáveis x, y e z, onde x e y são atribuídos os valores 5 e 10, respectivamente. A variável z é inicializada com a soma de x e y.<br />
O comando <strong>println!(&#8220;O valor de z é {}&#8221;, z);</strong> exibe o valor da variável z na saída padrão.</p>
<h3>Variáveis mutáveis e imutáveis</h3>
<p>Na verdade, existem duas formas básicas de declaração de variáveis em Rust: as variáveis podem ser <em><strong>mutáveis</strong></em> ou <em><strong>imutáveis</strong></em>. Variáveis imutáveis são declaradas usando a palavra-chave <strong><em>let</em></strong>, enquanto variáveis mutáveis são declaradas usando a expressão <em><strong>let mut</strong></em>.</p>
<p>Exemplos:</p>
<pre><span style="color: #339966;"><strong>// declarar uma variável imutável x e atribuir o valor 10 a ela</strong></span>
<strong>let x = 10;</strong>
<span style="color: #339966;"><strong>// declarar uma variável mutável y e atribuir o valor 5 a ela</strong></span>
<strong>let mut y = 5; </strong></pre>
<p>Mas qual a diferença entre variáveis mutáveis e imutáveis? O que ocorre é que o valor atribuído a uma variável imutável <em>não pode ser alterado após a atribuição</em>, ao passo que o valor atribuído a uma variável mutável <em>pode ser alterado a qualquer momento</em>.</p>
<p>É importante notar que, em Rust, as variáveis são, por padrão, imutáveis. Isso significa que, se você tentar alterar o valor de uma variável imutável, o compilador emitirá um erro. Ou seja, se comportam como <strong><em>constantes</em></strong>. Por exemplo:</p>
<pre><strong>let z = 20; <span style="color: #339966;">// z é uma variável imutável com valor 20</span></strong>
<strong>z = 25; <span style="color: #339966;">// erro: tentativa de atribuir a uma variável imutável</span></strong></pre>
<p>Resumindo, variáveis mutáveis permitem que o valor de uma variável seja alterado durante a execução do programa, enquanto variáveis imutáveis não permitem que o valor atribuído seja modificado posteriormente. O uso adequado de variáveis mutáveis e imutáveis é importante para garantir a segurança e a confiabilidade do código Rust.</p>
<h3>Escopo de Variáveis</h3>
<p>O escopo de uma variável é o local no código da aplicação em que ela é válida e pode ser acessada. Em Rust, o escopo de uma variável é definido pelo local onde ela se encontra ou por um par de chaves <strong>{ }</strong>.</p>
<p>Uma variável declarada dentro de um escopo interno só é válida e acessível dentro daquele escopo e em seus subescopos.</p>
<p>Exemplo:</p>
<pre><span style="color: #ff0000;"><strong>fn main() {
  let x = 10;</strong></span>
<span style="color: #ff0000;"><strong>  {</strong></span>
<span style="color: #ff0000;"><strong>      let y = 5;</strong></span>
<strong><span style="color: #ff0000;">      println!("x + y = {}", x + y);</span> <span style="color: #339966;">// x e y são válidas apenas dentro desse escopo</span></strong>
<span style="color: #ff0000;"><strong>  }</strong></span>
<strong><span style="color: #ff0000;">  println!("x = {}", x);</span> <span style="color: #339966;">// x é válida fora do escopo interno
<span style="color: #ff0000;">  println!("y = {}", y);</span> // y não é válida fora do escopo interno
<span style="color: #ff0000;">}</span>
</span></strong></pre>
<p>Neste exemplo criamos duas variáveis, x e y, em dois escopos distintos. A variável x é criada com um escopo mais amplo (externo), ao passo que a variável y possui um escopo mais limitado por ter sido criada dentro de um bloco delimitado por chaves.</p>
<p>Por conta disso, as variáveis x e y podem ser acessadas e usadas dentro do escopo interno, pois são visíveis ali, mas a variável y não pode ser usada fora desse escopo, pois não é válida nesse local do código. Ou seja, será gerado o erro a seguir  ao tentar executar a última linha do código:</p>
<pre><span style="color: #993300;"><strong>error[E0425] : cannot find value `y` in this scope</strong></span></pre>
<p>Que significa &#8220;<em>não é possível encontrar o valor `y` neste escopo</em>&#8220;.</p>
<p>Nas próximas lições vamos explorar operadores variados em Rust, empregados para realizar operações aritméticas, comparação de valores e operações lógicas, entre outras.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/declaracao-e-atribuicao-de-variaveis-em-rust/">Declaração e Atribuição de Variáveis em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/declaracao-e-atribuicao-de-variaveis-em-rust/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tipos de Dados em Rust</title>
		<link>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 12:59:11 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Sistemas Embarcados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19278</guid>

					<description><![CDATA[<p>Tipos de Dados em Rust Os valores dos dados que são processados e armazenados, no Rust, são classificados em um determinado tipo de dados, de modo que o Rust saiba como lidar com cada dado em particular. O Rust é uma linguagem de tipagem estática, o que significa que ela precisa saber os tipos de todas as variáveis em tempo de compilação. Os tipos de dados em Rust são divididos em duas grandes categorias: Tipos Escalares e Tipos Compostos. Neste tutorial vamos nos focar nos tipos escalares em Rust, e no próximo, estudaremos os tipos compostos. Tipos Escalares em Rust Um tipo escalar representa um valor único. A linguagem Rust possui suporte a quatro tipos escalares primários, que são: Tipo Inteiro Ponto-Flutuante Booleano (Lógico) Caracteres Vamos estudar cada tipo separadamente. Tipo Inteiro em Rust Se refere a números sem uma parte decimal (fracionária). Os principais tipos inteiros em Rust são: Tabela 1.1: Tipos Inteiros em Rust Comprimento Com Sinal Sem Sinal 8 bits i8 u8 16 bits i16 u16 32 bits i32 u32 64 bits i64 u64 128 bits i128 u128 Com sinal e sem sinal indicam se o número pode ser negativo (com ou sem sinal de negativo: -). [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/">Tipos de Dados em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de Dados em Rust</h2>
<p>Os valores dos dados que são processados e armazenados, no Rust, são classificados em um determinado tipo de dados, de modo que o Rust saiba como lidar com cada dado em particular.</p>
<p>O Rust é uma linguagem de <em>tipagem estática</em>, o que significa que ela precisa saber os tipos de todas as variáveis em tempo de compilação.</p>
<p>Os tipos de dados em Rust são divididos em duas grandes categorias: Tipos Escalares e Tipos Compostos. Neste tutorial vamos nos focar nos tipos escalares em Rust, e no próximo, estudaremos os tipos compostos.</p>
<h3>Tipos Escalares em Rust</h3>
<p>Um tipo escalar representa um valor único. A linguagem Rust possui suporte a quatro tipos escalares primários, que são:</p>
<ul>
<li>Tipo Inteiro</li>
<li>Ponto-Flutuante</li>
<li>Booleano (Lógico)</li>
<li>Caracteres</li>
</ul>
<p>Vamos estudar cada tipo separadamente.</p>
<h3>Tipo Inteiro em Rust</h3>
<p>Se refere a números sem uma parte decimal (fracionária). Os principais tipos inteiros em Rust são:</p>
<p><em>Tabela 1.1: Tipos Inteiros em Rust</em></p>
<table style="border-collapse: collapse; width: 72.8587%; height: 160px;" border="1">
<tbody>
<tr>
<th style="width: 33.3333%; text-align: center;">Comprimento</th>
<th style="width: 33.3333%; text-align: center;">Com Sinal</th>
<th style="width: 33.3333%; text-align: center;">Sem Sinal</th>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">8 bits</td>
<td style="width: 33.3333%; text-align: center;">i8</td>
<td style="width: 33.3333%; text-align: center;">u8</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">16 bits</td>
<td style="width: 33.3333%; text-align: center;">i16</td>
<td style="width: 33.3333%; text-align: center;">u16</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">32 bits</td>
<td style="width: 33.3333%; text-align: center;">i32</td>
<td style="width: 33.3333%; text-align: center;">u32</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">64 bits</td>
<td style="width: 33.3333%; text-align: center;">i64</td>
<td style="width: 33.3333%; text-align: center;">u64</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;">128 bits</td>
<td style="width: 33.3333%; text-align: center;">i128</td>
<td style="width: 33.3333%; text-align: center;">u128</td>
</tr>
</tbody>
</table>
<p><em>Com sinal</em> e <em>sem sinal</em> indicam se o número pode ser negativo (com ou sem sinal de negativo: -).</p>
<p>Cada tipo com sinal pode armazenar números de -(2<sup>n &#8211; 1</sup>) a 2<sup>n &#8211; 1</sup> &#8211; 1 inclusive, onde n é o número de bits que o tipo em particular usa. Assim, um inteiro do tipo i8 pode armazenar números de -(2<sup>7</sup>) até 2<sup>7</sup> &#8211; 1, que equivale à faixa numérica de -128 a 127.</p>
<p>Já tipos sem sinal podem armazenar números de 0 a 2<sup>n</sup> &#8211; 1 (ou seja, somente positivos), e assim um tipo inteiro u8 consegue armazenar números de 0 a 2<sup>8</sup> &#8211; 1, que é a faixa de 0 a 255.</p>
<p>O tipo inteiro <strong>padrão</strong> em Rust é o <strong>i32</strong>, que significa que se o tipo não for explicitamente declarado, será assumido um número inteiro com sinal (i), que pode representar valores positivos e negativos, ocupando um espaço de 32 bits na memória RAM.</p>
<p>Chamamos de <strong>Inferência de Tipo</strong> quando um tipo não é explicitamente declarado.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let a = 90;
  let g: u32 = 100;</strong>
<strong>  let x: i32 = -250;
  println!("Tipo Inteiro com sinal: {}", a);
  println!("Outro dado inteiro, sem sinal: {}", g);</strong>
<strong>  println!("Mais um inteiro com sinal, declarado explicitamente: {}", x);
}</strong></pre>
<h3>Tipo de Ponto Flutuante em Rust</h3>
<p>Tipos de ponto flutuante são aqueles que representam as casas decimais &#8211; são os números quebrados, coloquialmente.</p>
<p>Em Rust os tipos de ponto flutuante são <strong>f32</strong> e <strong>f64</strong>, de tamanhos 32 e 64 bits, respectivamente. O padrão é o tipo f64, e ambos os tipos possuem sinal.</p>
<p>O tipo f32 é de precisão simples (&#8220;<em>float</em>&#8220;), e o tipo f64, de precisão dupla (&#8220;<em>double</em>&#8220;).</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let b: f32 = 6.000001; <span style="color: #339966;">// se houver mais um zero na parte decimal, o valor será exibido incorretamente</span></strong>
<strong>  let d: f64 = 6.0000000001; <span style="color: #339966;">// exibe o valor normalmente</span>
  println!("{}", b);</strong>
<strong>  println!("{}", d);
}</strong></pre>
<h3>Tipo Booleano</h3>
<p>Um tipo booleano é um tipo lógico, que suporta apenas dois valores possíveis: <strong>true</strong> e <strong>false</strong> (verdadeiro e falso). Este tipo possui tamanho de um byte, e é declarado com a palavra-chave bool.</p>
<p>São empregados comumente em estruturas de decisão e laços de repetição, onde uma condição deve ser avaliada para decidir o que o programa fará na sequência.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {
  let V: bool = true;</strong>
<strong>  let F: bool = false;</strong>
<strong>  println!("{}", V);</strong>
<strong>  println!("{}", F);
}</strong></pre>
<h3>Tipo de Caractere</h3>
<p>O tipo padrão para armazenamento de caracteres em Rust é o tipo <strong>char.</strong> Este tipo, cujos dados são representados entre aspas simples, ocupa quatro bytes por dado e representa um valor escalar Unicode. Sendo assim, consegue representar caracteres ASCII, símbolos e caracteres especiais, caracteres em idiomas orientais (Chinês, Japonês, Coreano, etc.), emojis e muitos outros.</p>
<p>Exemplo:</p>
<pre><strong>fn main() {</strong>
<strong>  let c: char = 'Q';</strong>
<strong>  println!("{}", c);</strong>
<strong>}</strong></pre>
<p>Note que o tipo char é empregado para o armazenamento de um caractere único. Sendo assim, a declaração a seguir está incorreta, e irá gerar um erro ao compilarmos:</p>
<pre><strong>fn main() {</strong>
<strong>  let c: char = 'Morango';</strong>
<strong>  println!("{}", c);</strong>
<strong>}</strong></pre>
<p>Como declaramos um tipo para representar mais de um caractere então? Para isso necessitamos de um tipo para armazenamento de <em>strings</em>.</p>
<h3>Strings em Rust</h3>
<p>Uma <em><strong>string</strong> </em>é uma cadeia de caracteres, que empregamos para armazenar dados comuns como nomes, palavras, códigos, descrições, etc.</p>
<p>Em Rust, existe um tipo string, com suporte a UTF-8.</p>
<p>Para criarmos um dado do tipo string, devemos representar seu valor entre aspas duplas, como no exemplo a seguir:</p>
<pre><strong>fn main() {</strong>
<strong>  let nome = "Fábio dos Reis";</strong>
<strong>  println!("{}", nome);</strong>
<strong>}</strong></pre>
<p>Neste exemplo, &#8220;Fábio dos Reis&#8221; é um <strong><em>literal de string</em></strong> e o tipo é <strong><em>&amp;&#8217;static str</em></strong>. Um literal de string é uma fatia de string alocada de forma estática, o que significa que ela fica armazenada dentro do programa compilado, existindo enquanto o programa estiver em execução.</p>
<p>Em Rust, existe um outro tipo para armazenamento de Strings. Trata-se do tipo <strong>String</strong>, cujo tamanho pode crescer dinamicamente. É possível criar objetos do tipo String convertendo uma fatia de string com o método <strong><em>to_string()</em></strong>.</p>
<p>Confuso? Não se preocupe. Teremos um tutorial especial dedicado às strings em Rust. Por enquanto, basta declarar os dados do tipo string envolvendo-os em aspas duplas ao declarar uma variável, como no exemplo a seguir:</p>
<pre><strong>fn main() {</strong>
<strong> let canal = "Bóson Treinamentos em Tecnologia!";</strong>
<strong> println!("{}", canal);</strong>
<strong>}</strong></pre>
<p>Nas próximas lições vamos dar uma olhada em alguns tipos compostos em Rust, além de aprender a realizar a conversão de um tipo em outro (<em>casting</em> de tipos).</p>
<h3>Perguntas e Respostas comuns</h3>
<p><strong>O que é um Tipo de Dado em programação?</strong><br />
Tipo de dado é uma classificação que especifica qual tipo de valor uma variável pode armazenar, e que tipos de operações matemáticas, relacionais ou lógicas podem ser aplicadas a essa variável, sem causar erros.</p>
<p><strong>Quais são os tipos escalares em Rust?</strong><br />
Os tipos escalares em Rust são o tipo inteiro, de ponto flutuante , booleano e de caracteres.</p>
<p><strong>O que significa <em>tipo com sinal</em> e <em>tipo sem sinal</em>?</strong><br />
Tipo com sinal indica que o número pode ser negativo (com sinal <strong>&#8211;</strong>), e tipo sem sinal, que o número somente pode ser positivo.</p>
<h3>Referências</h3>
<ul>
<li>Site oficial da linguagem Rust: <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">https://www.rust-lang.org/</a></li>
<li>Documentação oficial do Rust:<a href="https://doc.rust-lang.org/" target="_blank" rel="noopener"> https://doc.rust-lang.org/</a></li>
<li>Rust by Example: <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener">https://doc.rust-lang.org/stable/rust-by-example/</a></li>
<li>Rust Programming Language Book: <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener">https://doc.rust-lang.org/book/</a></li>
<li>The Rust Programming Language Blog: <a href="https://blog.rust-lang.org/" target="_blank" rel="noopener">https://blog.rust-lang.org/</a></li>
</ul>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/">Tipos de Dados em Rust</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/tipos-de-dados-em-rust/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como criar seu primeiro programa em Rust e instalação da linguagem</title>
		<link>https://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 17:28:37 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Script]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19236</guid>

					<description><![CDATA[<p>Como criar seu primeiro programa em Rust Como vimos no primeiro artigo desta série, o Rust é uma linguagem de programação de sistema desenvolvida pela Mozilla Research com o objetivo de fornecer segurança, concorrência e desempenho. Trata-se de uma linguagem de tipagem estática que oferece alta performance e segurança, sem precisar sacrificar a expressividade ou a simplicidade do código. Neste tutorial, mostro como instalar a linguagem Rust e como criar seu primeiro programa, uma aplicação Rust bem simples. Instalação do Rust Antes de começar a programar em Rust, precisamos instalá-lo no computador. O processo de instalação é bem simples, e a linguagem pode ser instalada tanto no sistema operacional Windows, quanto no Linux ou no macOS. Como instalar o Rust no Windows O procedimento para instalar o Rust no Windows é bem simples, e é similar à instalação de qualquer aplicativo comum no SO: Acesse o site oficial do Rust: https://www.rust-lang.org/tools/install Escolha e baixe o instalador adequado para a versão do seu sistema operacional. Execute o arquivo do instalador. Siga as instruções do setup para realizar a instalação. Uma observação importante: Talvez seja necessário instalar as ferramentas de compilação do Microsoft C++ para Visual Studio 2013 ou posterior (vs_BuildTools), pois [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/">Como criar seu primeiro programa em Rust e instalação da linguagem</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como criar seu primeiro programa em Rust</h2>
<p>Como vimos no <a href="http://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/">primeiro artigo desta série</a>, o Rust é uma linguagem de programação de sistema desenvolvida pela Mozilla Research com o objetivo de fornecer segurança, concorrência e desempenho. Trata-se de uma linguagem de tipagem estática que oferece alta performance e segurança, sem precisar sacrificar a expressividade ou a simplicidade do código.</p>
<p>Neste tutorial, mostro como instalar a linguagem Rust e como criar seu primeiro programa, uma aplicação Rust bem simples.</p>
<h3>Instalação do Rust</h3>
<p>Antes de começar a programar em Rust, precisamos instalá-lo no computador. O processo de instalação é bem simples, e a linguagem pode ser instalada tanto no sistema operacional Windows, quanto no Linux ou no macOS.</p>
<h3>Como instalar o Rust no Windows</h3>
<p>O procedimento para instalar o Rust no Windows é bem simples, e é similar à instalação de qualquer aplicativo comum no SO:</p>
<ol>
<li>Acesse o site oficial do Rust: <a href="https://www.rust-lang.org/tools/install" target="_blank" rel="noopener">https://www.rust-lang.org/tools/install</a></li>
<li>Escolha e baixe o instalador adequado para a versão do seu sistema operacional.</li>
<li>Execute o arquivo do instalador.</li>
<li>Siga as instruções do setup para realizar a instalação.</li>
</ol>
<p>Uma observação importante: Talvez seja necessário instalar as ferramentas de compilação do Microsoft C++ para Visual Studio 2013 ou posterior (<strong><em>vs_BuildTools</em></strong>), pois este é um pré-requisito para o uso da linguagem. Elas podem ser baixadas <a href="https://www.visulstudio.microsoft.com/pt-br/visual-cpp-build-tools/" target="_blank" rel="noopener">neste link</a>.</p>
<h3>Como instalar o Rust no Linux</h3>
<p>A instalação do Rust no Linux pode ser feita inteiramente por comandos simples no terminal. Basta baixar o script de instalação (com curl o outra ferramenta de download) e rodá-lo, seguindo as instruções na tela (que são as mesmas que aparecem na instalação no Windows).</p>
<p>Vou usar o curl neste tutorial para baixar o instalador do Rust. Se o curl não estiver instalado em seu sistema, execute o comando a seguir para instalá-lo:</p>
<pre><strong>$ sudo apt install curl</strong></pre>
<p>Se usar uma distribuição baseada em outro gerenciador de pacotes, como rpm ou pacman, execute o comando similar para instalação.</p>
<p>O próximo passo é baixar o script de instalação e executá-lo:</p>
<pre><strong>$ sudo curl https://sh.rustup.rs -sSf | sh</strong></pre>
<p>No prompt que aparece, digite 1 e pressione Enter para prosseguir com a instalação:</p>
<p><img decoding="async" class="aligncenter wp-image-19245" title="Instalação do Rust no Linux" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-01.jpg" alt="Instalação do Rust no Linux" width="500" height="194" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-01.jpg 670w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-01-420x163.jpg 420w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>E aguarde enquanto o software é instalado no sistema. Se a instalação for bem-sucedida, aparecerá a mensagem &#8220;<strong>Rust is installed now. Great!</strong>&#8220;.</p>
<p>Faça logoff e login novamente para reiniciar o shell, pois é necessário recarregar a <a href="http://www.bosontreinamentos.com.br/linux/como-listar-as-variaveis-de-ambiente-no-linux/">variável de ambiente PATH</a> para incluir o diretório <strong><em>bin</em></strong> do Cargo, que é o gerenciador de pacotes do Rust.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-19246" title="Instalação do Rust no Linux - Gerenciador de pacotes Cargo" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-02.jpg" alt="Instalação do Rust no Linux - Gerenciador de pacotes Cargo" width="510" height="126" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-02.jpg 802w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-02-420x104.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/rust-instalar-linux-02-768x190.jpg 768w" sizes="auto, (max-width: 510px) 100vw, 510px" /></p>
<p>Opcionalmente, podemos executar o comando a seguir para adicionar o Rust à variável PATH manualmente (sem reiniciar o terminal):</p>
<pre><strong>$ source $HOME/.cargo/env</strong></pre>
<p>Poderemos ter problemas mais adiante ao tentar compilar um programa se não houver um linker (ligador) instalado no sistema. Será exibida  a mensagem <strong><em>&#8220;error: linker `cc` not found</em></strong>&#8220;, significando que precisamos instalar esse software.</p>
<p>Para evitar esse problema, instale o toolchain <strong>gcc</strong> com os comandos a seguir:</p>
<pre><strong>$ sudo apt update</strong>
<strong>$ sudo apt install build-essential</strong></pre>
<p>O compilador do Rust é o <strong>rustc</strong>. Podemos verificar a versão do compilador instalado executando o seguinte comando:</p>
<pre><strong>$ rustc --version</strong>
<em><span style="color: #000000;">ou simplesmente</span></em>
<strong>$ rustc -V</strong></pre>
<p>O gerenciador de pacotes do Rust é o <strong>Cargo</strong>. Podemos verificar se ele foi instalado corretamente, e sua versão, com o comando a seguir:</p>
<pre><strong>$ cargo -V</strong></pre>
<h4>Desinstalação do Rust</h4>
<p>E se precisarmos desinstalar o Rust do computador por algum motivo? Bem, o processo não poderia ser mais simples. Basta executar o comando a seguir:</p>
<pre><strong>$ rustup self uninstall</strong></pre>
<p>Neste ponto, se tudo correu da forma esperada, temos a linguagem Rust e outros pacotes necessários instalados no sistema, e estamos prontos para criar nossa primeira aplicação de teste.</p>
<h3>Primeiro programa em Rust</h3>
<p>Após a instalação, vamos criar nosso primeiro programa em Rust. Para tal, abra um editor de texto de sua preferência e crie um arquivo chamado <em><strong>primeiro.rs</strong></em>. É importante certificar-se de que a extensão do arquivo seja <strong>.rs</strong> &#8211; tome cuidado, pois alguns editores de texto usam sua própria extensão de nome de arquivo.</p>
<p>No Windows, recomendo o uso do <a href="https://code.visualstudio.com/" target="_blank" rel="noopener">Visual Studio Code</a> para realizar testes e criar o script mostrado na sequência. Se usar o Linux, uma boa pedida é o <a href="https://www.geany.org/" target="_blank" rel="noopener">IDE Geany</a> &#8211; mas para esse teste simples os editores <a href="https://www.youtube.com/watch?v=Gw_MHy6_0UU">nano</a> ou <a href="https://www.youtube.com/playlist?list=PLucm8g_ezqNrSiAV5kYSW4h_xrC4dWVRh">vi</a> servirão perfeitamente.</p>
<p>Em seguida, adicione o seguinte código ao arquivo:</p>
<pre><strong>fn main() {</strong>
<strong>    println!("Olá, Pessoal!");</strong>
<strong>}</strong></pre>
<p>Este é o clássico programa &#8220;Hello, World!&#8221; básico em Rust, modificado para exibir a mensagem &#8220;Olá, Pessoal!&#8221;.</p>
<p>O código <em><strong>fn main()</strong></em> é a função principal do programa, que é executada quando o programa é iniciado. O comando <em><strong>println!(&#8220;Olá, Pessoal!&#8221;)</strong></em> é um comando (macro) para exibir a string &#8220;Olá, Pessoal!&#8221; na saída padrão (terminal).</p>
<p>Para executar o programa, abra o terminal ou prompt de comandos e navegue até a pasta onde foi salvo o arquivo <em>primeiro.rs</em>. Em seguida, digite o seguinte comando:</p>
<pre><strong>$ rustc primeiro.rs</strong></pre>
<p>Este comando compila o arquivo primeiro.rs e cria um arquivo executável com o mesmo nome na mesma pasta. Para executar o programa, basta digitar o seguinte comando (se estiver no Windows):</p>
<pre><strong>$ primeiro</strong></pre>
<p>No Linux execute:</p>
<pre><strong>$ ./primeiro</strong></pre>
<p>Deverá ser exibida a mensagem &#8220;Olá, Pessoal!&#8221; na saída do terminal:</p>
<pre><span style="color: #800000;"><strong>Olá, Pessoal!</strong></span></pre>
<p>É isso aí! Linguagem Rust instalada e primeiro programa criado e testado com sucesso!</p>
<p>Na próxima lição iniciamos o estudo de programação em Rust aprendendo sobre variáveis e tipos de dados.</p>
<h3>Referências</h3>
<ul>
<li>Site oficial da linguagem Rust: <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">https://www.rust-lang.org/</a></li>
<li>Documentação oficial do Rust:<a href="https://doc.rust-lang.org/" target="_blank" rel="noopener"> https://doc.rust-lang.org/</a></li>
<li>Rust by Example: <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener">https://doc.rust-lang.org/stable/rust-by-example/</a></li>
<li>Rust Programming Language Book: <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener">https://doc.rust-lang.org/book/</a></li>
<li>The Rust Programming Language Blog: <a href="https://blog.rust-lang.org/" target="_blank" rel="noopener">https://blog.rust-lang.org/</a></li>
</ul>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/">Como criar seu primeiro programa em Rust e instalação da linguagem</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O que é a linguagem Rust de programação</title>
		<link>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/</link>
					<comments>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 17:04:17 +0000</pubDate>
				<category><![CDATA[Rust]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Sistema Operacional]]></category>
		<category><![CDATA[Sistemas Embarcados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19234</guid>

					<description><![CDATA[<p>O que é a linguagem Rust? Neste artigo dou início a uma série de tutoriais sobre uma linguagem de programação muito interessante, por vários motivos que veremos a seguir, e que está em ascenção na atualidade: a linguagem Rust. O Rust é uma linguagem de programação de sistemas, desenvolvida como um projeto pessoal pelo desenvolvedor Graydon Hoare (que também criou a linguagem Swift), que trabalhava na Mozilla Research, sendo posteriormente financiado pela empresa. É uma linguagem que foi projetada para ser segura, rápida e com suporte a concorrência, combinando o controle de baixo nível existente em linguagens como C e C++ com recursos de alto nível, como gerenciamento de memória sem garbage collector, sistema de tipos forte e estático e abstrações de dados. Logo da linguagem Rust de Programação O site oficial da linguagem Rust é o rust-lang.org. Linguagens de programação de sistemas são empregadas para criar software e plataformas de software, como sistemas operacionais, compiladores, motores de jogos, sistemas embarcados, etc. Ou seja, são linguagens que efetuam uma forte interação com o hardware da máquina. Outros exemplos de linguagens de sistemas são as linguagens C e C++. Características do Rust Uma das principais características da linguagem Rust é sua [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/">O que é a linguagem Rust de programação</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que é a linguagem Rust?</h2>
<p>Neste artigo dou início a uma série de tutoriais sobre uma linguagem de programação muito interessante, por vários motivos que veremos a seguir, e que está em ascenção na atualidade: a <strong>linguagem Rust</strong>.</p>
<p>O Rust é uma linguagem de programação de sistemas, desenvolvida como um projeto pessoal pelo desenvolvedor <a href="https://github.com/graydon" target="_blank" rel="noopener">Graydon Hoare</a> (que também criou a linguagem Swift), que trabalhava na Mozilla Research, sendo posteriormente financiado pela empresa.</p>
<p>É uma linguagem que foi projetada para ser segura, rápida e com suporte a concorrência, combinando o controle de baixo nível existente em linguagens como C e C++ com recursos de alto nível, como gerenciamento de memória sem <em>garbage collector</em>, sistema de tipos forte e estático e abstrações de dados.</p>
<div id="attachment_19262" style="width: 260px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-19262" class="wp-image-19262" title="Logo da linguagem Rust de Programação" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-1024x1024.png" alt="Logo da linguagem Rust de Programação" width="250" height="250" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-1024x1024.png 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-170x170.png 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-420x420.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo-768x768.png 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/Rust-Logo.png 2048w" sizes="auto, (max-width: 250px) 100vw, 250px" /><p id="caption-attachment-19262" class="wp-caption-text">Logo da linguagem Rust de Programação</p></div>
<p>O site oficial da linguagem Rust é o <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">rust-lang.org</a>.</p>
<hr />
<p><span style="color: #003300;">Linguagens de <em>programação de sistemas</em> são empregadas para criar software e plataformas de software, como sistemas operacionais, compiladores, motores de jogos, sistemas embarcados, etc.</span></p>
<p><span style="color: #003300;">Ou seja, são linguagens que efetuam uma forte interação com o hardware da máquina. Outros exemplos de linguagens de sistemas são as linguagens <a style="color: #003300;" href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">C</a> e <a style="color: #003300;" href="http://www.bosontreinamentos.com.br/category/programacao-em-c/">C++</a>.</span></p>
<hr />
<h3>Características do Rust</h3>
<p>Uma das principais características da linguagem Rust é sua ênfase na segurança e na prevenção de erros de programação comuns, como por exemplo acessos inválidos a memória, vazamentos de memória e condições de corrida em programas concorrentes.</p>
<p>Para isso, a linguagem inclui diversos recursos como verificação de limites de vetor em tempo de compilação, controle de mutabilidade de dados, gerenciamento de memória baseado em propriedade (<em>ownership</em>) e sistema de tipos avançado com  exclusão mútua.</p>
<p>Além disso, outra característica importante da linguagem Rust é seu desempenho, que pode ser comparado ao de linguagens de sistemas como <a href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">linguagem C</a> e <a href="http://www.bosontreinamentos.com.br/category/programacao-em-c/">C++</a>.</p>
<p>Isso se deve em parte ao fato de Rust permitir programação de baixo nível, incluindo acesso direto a hardware, sem a sobrecarga de um garbage collector ou de outros recursos de linguagens de alto nível.</p>
<p>Sendo assim, podemos resumir algumas das características principais da linguagem Rust como sendo:</p>
<ul>
<li><strong>Desempenho</strong><br />
Essa linguagem não possui um coletor de lixo (<em>Garbage Collector</em> &#8211; GC) por padrão. Por conta disso, o desempenho em tempo de execução é bastante melhorado.</li>
<li><strong>Segurança de memória em tempo de compilação</strong><br />
Softwares criados com Rust são protegidos contra problemas de memória, como ponteiros pendentes, estouros de buffer e vazamentos de memória.</li>
<li><strong>Aplicativos Multi-Thread</strong><br />
As regras de propriedade e segurança de memória do Rust fornecem simultaneidade sem corridas de dados.</li>
<li><strong>Suporte para Web Assembly (WASM)</strong><br />
O Web Assembly ajuda a executar algoritmos de computação altamente intensiva no navegador, em dispositivos embarcados ou em qualquer outro lugar. Ele é executado na velocidade do código nativo, para execução rápida e confiável.</li>
</ul>
<p>Além disso, o Rust tem uma comunidade de desenvolvedores ativa e crescente, com muitas bibliotecas e ferramentas disponíveis para uma variedade de aplicações, incluindo automação de processos, jogos, computação científica e sistemas embarcados.</p>
<h3>Quais são as aplicações da linguagem Rust?</h3>
<p>A linguagem Rust é uma linguagem de programação de propósito geral que foi desenvolvida com o objetivo de fornecer segurança e alto desempenho em sistemas de software. Algumas das principais aplicações da linguagem Rust incluem:</p>
<ul>
<li><strong>Sistemas Operacionais</strong>: a linguagem Rust é adequada para o desenvolvimento de sistemas operacionais devido à sua segurança e desempenho.</li>
<li><strong>Software de rede</strong>: a linguagem Rust é adequada para o desenvolvimento de software de rede devido à sua capacidade de lidar com operações de E/S de forma eficiente e segura.</li>
<li><strong>Software para sistemas embarcados</strong>: a linguagem Rust é adequada para o desenvolvimento de software de sistemas embarcados devido à sua capacidade de fornecer código de baixo nível com segurança e alto desempenho.</li>
<li><strong>Servidores web</strong>: a linguagem Rust é adequada para o desenvolvimento de servidores web devido à sua capacidade de lidar com grande quantidade de requisições simultâneas com eficiência e segurança.</li>
<li><strong>Jogos</strong>: a linguagem Rust é adequada para o desenvolvimento de aplicações de jogos devido à sua capacidade de fornecer alto desempenho e segurança no gerenciamento de memória.</li>
</ul>
<p>Essas são algumas das principais aplicações da linguagem Rust. Com o seu crescimento e popularidade, novas aplicações e usos estão sendo desenvolvidos pela comunidade de programadores.</p>
<p>Parece excelente não? <strong><em>Mas como começar a programar em Rust?</em></strong></p>
<p>No próximo tutorial mostrarei <a href="http://www.bosontreinamentos.com.br/rust/como-criar-seu-primeiro-programa-em-rust-e-instalacao-da-linguagem/">como instalar a linguagem e criar seu primeiro programa em Rust</a>.</p>
<h3>Referências</h3>
<ul>
<li>Site oficial da linguagem Rust: <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">https://www.rust-lang.org/</a></li>
<li>Documentação oficial do Rust:<a href="https://doc.rust-lang.org/" target="_blank" rel="noopener"> https://doc.rust-lang.org/</a></li>
<li>Rust by Example: <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener">https://doc.rust-lang.org/stable/rust-by-example/</a></li>
<li>Rust Programming Language Book: <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener">https://doc.rust-lang.org/book/</a></li>
<li>The Rust Programming Language Blog: <a href="https://blog.rust-lang.org/" target="_blank" rel="noopener">https://blog.rust-lang.org/</a></li>
</ul>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/">O que é a linguagem Rust de programação</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/rust/o-que-e-a-linguagem-rust-de-programacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
