Iniciante Fundamentos
Structs
Structs agrupam dados relacionados em um tipo próprio, como um molde para seus objetos.
Definir e instanciar
struct Usuario {
nome: String,
idade: u32,
ativo: bool,
}
fn main() {
let u = Usuario {
nome: String::from("Ana"),
idade: 30,
ativo: true,
};
println!("{} tem {} anos", u.nome, u.idade);
}
Instância mutável
struct Ponto {
x: i32,
y: i32,
}
fn main() {
let mut p = Ponto { x: 0, y: 0 };
p.x = 10;
println!("({}, {})", p.x, p.y);
}
Métodos com impl
O bloco impl adiciona métodos. O primeiro parâmetro &self é a própria instância.
struct Retangulo {
largura: u32,
altura: u32,
}
impl Retangulo {
fn area(&self) -> u32 {
self.largura * self.altura
}
}
fn main() {
let r = Retangulo { largura: 4, altura: 5 };
println!("Área: {}", r.area()); // 20
}
Funções associadas
Sem self, viram funções associadas, úteis como construtores. Chame com ::.
struct Circulo {
raio: f64,
}
impl Circulo {
fn novo(raio: f64) -> Circulo {
Circulo { raio }
}
}
fn main() {
let c = Circulo::novo(2.0);
println!("{}", c.raio);
}