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 titulo e ano com 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

  1. Definimos a struct Livro com dois campos: titulo do tipo String e ano do tipo u32.
  2. No main, criamos uma instância de Livro usando a sintaxe Livro { campo: valor, ... }.
  3. Para o título, usamos String::from para criar uma String a partir de um literal.
  4. Imprimimos os campos com println!, acessando-os com .titulo e .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 se livro não for mut.

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