Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Operadores de atribuição
  2. Operadores de aritméticos
  3. Operadores de lógicos
  4. Operadores de relacionais
  5. Operadores de bit-a-bit/bitwise
  6. Outros operadores
  7. Precedência de operadores
  8. sobrecarga de operadores

Os conceitos sobre expressões foram estudados em Portugol: Expressões e Tutorial C. A Leitura é recomendada em caso de dúvida.

Para declarar expressões em Rust, assim como em várias linguagens, precisamos conhecer os seus operadores. Como Rust é uma linguagem estilo-C, ela herda os principais operadores da linguagem C adicionando novos operadores.

Exemplo 1
let expressao:u32 = (A*B + C^D)*(E/F) + G%10 

Nesta parte vamos estudar os operadores aritméticos, lógicos, relacionais e bit-a-bit e outros suportados pela linguagem Rust.

Para realizar atribuições em nossas variáveis e constantes em Rust, utilizamos os seguintes operadores de atribuição abaixo:

Tab. 1 - Operadores de Atribuição
Operador Descrição Exemplo
= Atribuição a=b -
+= Atribuição acumulativa de adição a+=b a = a + b
-= Atribuição acumulativa de subtração a-=b a = a - b
*= Atribuição acumulativa de multiplicação a*=b a = a * b
%= Atribuição acumulativa de Módulo a%=b a = a % b
/= Acumulação de divisão a/=b a = a + b
|= Acumulação de OU bit-a-bit a/=b a = a / b
&= Acumulação de E bit-a-bit a&=b a = a & b
^= Acumulação de Ou-Exclusivo bit-a-bit a^=b a = a ^ b
<<= Acumulação de deslocamento a<<=b a = a << b
>>= Acumulação de deslocamento a>>=b a = a >> b
Sintaxe
variavel = valor ou expressao

variavel operador= valor ou expressao
Exemplo 2
fn main() {

    let a =20;
    let b =10;
    let mut c = 0;
    
    c += a;
    println!("{c}");
    c -= b;
    println!("{c}");
    c *= a;
    println!("{c}");
    c /= b;
    println!("{c}");
    c %= a;
    println!("{c}");
}
Saída
20
10
200
20
0

Para a declaração de expressões aritméticas, a linguagem Rust fornece os operadores listados na tabela abaixo:

A linguagem Go possui os seguintes operadores aritméticos binários:

Tab. 2 - Operadores Aritméticos
Operador Descrição Exemplo
+ Adição a+b
- Subtração a-b
* Multiplicação a*b
/ Divisão a/b
% Módulo a%b
Sintaxe
variavel ou valor operador variavel2 ou valor2
Exemplo 3
fn main() {

    let a =20;
    let b =10;
    let mut c;
    
    c = a+b;
    println!("{}",c);
    c = a-b;
    println!("{}",c);
    c = a*b;
    println!("{}",c);
    c = a/b;
    println!("{}",c);
    c = a%b;
    println!("{}",c);
}
Saída
30
10
200
2
0

Diferente de outras linguagens estilo-C, Rust não possui suporte aos conhecidos operadores unários ++ e -- de incremento e decremento.

Para auxiliar nas tomadas de decisões, Rust fornece os operadores relacionais mostrados na tabela abaixo. Esses operadores retornam um booleano true ou false.

Tab. 3 - Operadores Relacionais
Operador Descrição Exemplo
== Igual a == b
>= Maior ou igual a >= b
<= Menor ou igual a <= b
!= Diferente a != b
> Maior a>b
Sintaxe
valor1 ou expressao1 operador valor2 ou expressao2
Exemplo 4
fn main() {

    let a =20;
    let b =10;
    let mut c;
    
    c = a > b;
    println!("{}",c);
    c = a < b;
    println!("{}",c);
    c = a != b;
    println!("{}",c);
    c = b == b;
    println!("{}",c);
    c = a >= b;
    println!("{}",c);
    c = a <= b;
    println!("{}",c);
}
Saída
true
false
true
true
true
false

Para entender a aplicação dos operadores lógicos é importante entender sobre a tabela verdade que foi explicado em Tutorial Portugol: Operadores Lógicos e Tutorial C: Operadores Lógicos.

Esses operadores retornam verdadeiro(true) ou falso(false) assim como os operadores relacionais mostrados acima. São usados para declarar expressões lógicas na tomada de decisões, por exemplo. Rust fornece os operadores abaixo:

Tab. 4 - Operadores Lógicos
Operador Significado Exemplo
&& E lógico a && b
! Não lógico !a
|| OR lógico a || b
Sintaxe
valor1 ou expressao operador valor2 ou expressao

!valor ou expressao
Exemplo 5
fn main() {

    let a = true;
    let b = false;
    let mut c:bool;
    
    c = a || b;
    println!("{}",c);
    c = a && b;
    println!("{}",c);    
    c = !b;
    println!("{}",c);
}
Saída
true
false
true

O uso dos operadores bit-a-bit já foi estudado em Lógica de programação e Tutorial C . É importante entender sobre a tabela verdade que foi explicado em Tutorial Portugol: Operadores Lógicos e Tutorial C: Operadores Lógicos.

Os operadores bitwise realizam as operações E, OU e OU Exclusivo e deslocamento sobre os bits de variáveis, valores ou expressões. Essas operações retornam 0 ou 1 dependendo de suas tabelas verdades.

Os operadores de deslocamento para direita ou esquerda (>>) e (<<) são usados para auxiliar na recuperação de determinados bits de uma variável, valor ou expressão.

Tab. 5 - Operadores bitwise - deslocamento
Operador Descrição Exemplo
>> Desloca N bits à direita a>>b
<< Desloca N bits à esquerda a<<b
Sintaxe
valor, expressao ou variavel operador qtd_bits
Exemplo 6
fn main() 
{
    let a = 4;
    let b = 8;
    let mut c;
    
    c = a << 1;
    println!("{}",c);
    c = b >> 1;
    println!("{}",c);
}
Saída
8
4

Os operadores & , | e ^, realizam as operações E, OU e OU Exclusivo nos bits de uma variável, valor ou expressão. É necessário ter conhecimento da tabela verdade de cada operador para entender o funcionamento.

Tab. 5 - Operadores bitwise - deslocamento
Operador Descrição Exemplo
& E bit-a-bit a & b
| OU bit-a-bit a | b
^ OU Exclusivo A ^ B
Exemplo 7
fn main()
{
    let  a = 1;
    let  b = 2;
    let mut c;
    
    c = a & b;
    println!("{}",c);
    c = a | b;
    println!("{}",c);
    c = a ^ b;
    println!("{}",c);
}
Saída
1
3
2

Outros operadores que não se encaixam nos grupos vistos acima serão listados na tabela abaixo. Em futuras atualizações, mais operadores serão adicionados.

Tab. 7: Outros operadores
Operador Descrição Exemplo
in Acesso a elementos de coleção for x in variavel
as Casting *a
.. Operado de acesso variavel.nome_membro
=> Função anônima |x|=>{}
. Acesso a membro variavel.membro
:: Operador de acesso String::new()
* Ponteiro *ponteiro
-> Retorno funcao() -> i8
[] Indexador vetor[valor_indice]
Exemplo 8
fn main() {

    for val in 0..3 {
        print!("{val}")
    }
    
    let valor16:i16 = 512;
    let _valor8:i8 = valor16 as i8;
    
    let _inum: String = String::new();
    
    fn funcao(p:u8) -> u8 {
        return p*2;
    }
    
    print!("{}",funcao(1))
}
Saída
0122
  1. 13/11/2025 - versão inicial