Pular para conteúdo

Mini-Projeto: Gerenciador de Biblioteca 📚

Vamos usar Structs e Enums para modelar um sistema real de biblioteca, controlando o status de cada livro.

📋 Requisitos

  1. Enum de Status: Crie um enum Status com as variantes Disponivel e Emprestado(String) (onde a string guarda o nome de quem pegou).
  2. Struct de Livro: Crie uma struct Livro com campos para titulo, autor e o status.
  3. Métodos (impl): Implemente métodos para criar um novo livro e para realizar um empréstimo (mudando o status).

🚀 Guia de Execução

  1. Implementação sugerida:
    #[derive(Debug)]
    enum Status {
        Disponivel,
        Emprestado(String),
    }
    
    struct Livro {
        titulo: String,
        autor: String,
        status: Status,
    }
    
    impl Livro {
        fn novo(titulo: &str, autor: &str) -> Livro {
            Livro {
                titulo: String::from(titulo),
                autor: String::from(autor),
                status: Status::Disponivel,
            }
        }
    
        fn emprestar(&mut self, nome: String) {
            self.status = Status::Emprestado(nome);
        }
    }
    
    fn main() {
        let mut livro = Livro::novo("O Programador Pragmático", "Andrew Hunt");
    
        println!("Livro: {} | Status: {:?}", livro.titulo, livro.status);
    
        livro.emprestar(String::from("Ricardo"));
    
        println!("Após empréstimo: Status: {:?}", livro.status);
    }
    

✅ Critérios de Aceite

  • [ ] Uso correto de Enums com dados internos.
  • [ ] Implementação de métodos através do bloco impl.
  • [ ] O programa demonstra a mudança de estado interna de uma estrutura.