Introdução | Rust
- Introdução | Rust
Padrões (defaults) no Rust
| Aspecto | Padrão no Rust | Como alterar | Exemplo |
|---|---|---|---|
| Imutabilidade | Imutável por padrão | mut | let mut x = 10; |
| Visibilidade | Privado por padrão | pub, pub(crate), pub(super) | pub fn f() {} |
| Ownership | Move por padrão | Borrow (&, &mut) ou Clone | let b = a; (move) |
| Borrowing | Imutável por padrão | &mut para mutável | &x vs &mut x |
| Null | Não existe | Option<T> | Some(x) / None |
| Erros | Explícitos | Result<T, E> | fn f() -> Result<T, E> |
| Exceções | Não usadas por padrão | panic! (caso extremo) | panic!("erro") |
| Coerção de tipos | Não implícita | as, into(), from() | x as i64 |
| Pattern matching | Exaustivo obrigatório | _ ou todos os casos | match x { ... } |
| Imports | Explícitos | use | use crate::mod::Item; |
| Traits (comportamento) | Não implícitos | impl | impl Trait for T {} |
| Concorrência segura | Garantida em compile-time | unsafe para ignorar | Send, Sync |
| Struct fields | Privados por padrão | pub nos campos | pub nome: String |
| Enums | Fortemente tipados e exaustivos | _ ou todos os variants | enum X { A, B } |
| Variáveis não usadas | Warning por padrão | _ prefixo | let _x = 10; |
| Funções puras (sem efeito) | Incentivado | — | sem side-effects |
| Heap vs Stack | Stack por padrão | Box, Rc, Arc | Box::new(x) |

Como instalar o Rust?
- Por meio do rustup que é um rust installer e um toolchain managment`
- Documentação sobre
rustup: 🔗 Clique aqui
Compilation Targets
- O objetivo principal do compiler do rust é converter código rust em código de máquina
Release Channels
stablebeta- candidato para a próxima releasenightly- construido na master toda noite
Sintaxe
danger
Por padrão, tudo é imutável no Rust
info
No Rust, self é uma referência ao próprio objeto ou instância de uma struct ou enum dentro de um método ou função associada. Ele é usado para acessar os membros (campos e métodos) da instância dentro de uma implementação.
Print! | Rust
println!("{}", val);
print!("{:p}", val); // é usado para imprimir o endereço de memória de um ponteiro.
Variáveis imutáveis e mutáveis
let message = ""; // imutável
let mut message2 = ""; //mutável
let x: i32 = 5;
let y: bool = false;
let z: &str = "teste";
let list: [u8; 3] = [1, 2, 3];
// 2^8 - 1 = 255
let small_num: u8 = 5;
//-128 to 127
let small_num: i8 = 5;
//operating system related types
let sys_num: isize = -5;
let sys_num_2: usize = 5;
let hex_num = 0xfa;
let oct_num = 0o77;
let bin_num = 0b1010;
let byte_num = b'A';
let custom_num = 98_000;
let float_num: f32 = 3.14;
let float_num_2: f32 = 2.0;
let tuple = (20,3.12,1);
print!("{}", tuple.0);
print!("{:?}", tuple);
let x = [2; 6]; // [2,2,2,2,2,2]