Fácil Rust
Criando e exibindo uma struct
Enunciado
Defina uma struct Livro com os campos titulo (String) e ano (u32). No main, crie uma instância e imprima o título e o ano.
Requisitos
- A struct deve ter os campos
tituloeanocom os tipos corretos. - O programa deve criar uma instância com valores à sua escolha.
- A saída deve mostrar o título e o ano no formato especificado.
Código inicial
// Defina a struct Livro aqui
fn main() {
// Crie uma instância e imprima
}
Saída esperada
Livro: Rust Programming, Ano: 2023
Ver dica
Use println! com {} para exibir os campos. Lembre-se de que String pode ser criada com String::from("...") ou .to_string().
Mostrar solução
struct Livro {
titulo: String,
ano: u32,
}
fn main() {
let livro = Livro {
titulo: String::from("Rust Programming"),
ano: 2023,
};
println!("Livro: {}, Ano: {}", livro.titulo, livro.ano);
}
Passo a passo
- Definimos a struct
Livrocom dois campos:titulodo tipoStringeanodo tipou32. - No
main, criamos uma instância deLivrousando a sintaxeLivro { campo: valor, ... }. - Para o título, usamos
String::frompara criar umaStringa partir de um literal. - Imprimimos os campos com
println!, acessando-os com.tituloe.ano.
Por que funciona
Structs permitem agrupar dados relacionados. Acessar os campos com a notação de ponto é direto e seguro, pois o compilador verifica se os tipos estão corretos.
Erros comuns
- Esquecer de inicializar todos os campos:
let livro = Livro { titulo: String::from("Rust") };gera erro de compilação. - Tentar modificar um campo sem declarar a instância como mutável:
livro.ano = 2024;falha selivronão formut.
Outra forma de resolver
Usar uma função associada new para criar a instância:
impl Livro {
fn new(titulo: &str, ano: u32) -> Self {
Livro { titulo: titulo.to_string(), ano }
}
}
// Uso: let livro = Livro::new("Rust Programming", 2023);
Saída esperada
Livro: Rust Programming, Ano: 2023