Mini-Projeto: Gerenciador de Biblioteca 📚
Vamos usar Structs e Enums para modelar um sistema real de biblioteca, controlando o status de cada livro.
📋 Requisitos
- Enum de Status: Crie um
enum Statuscom as variantesDisponiveleEmprestado(String)(onde a string guarda o nome de quem pegou). - Struct de Livro: Crie uma
struct Livrocom campos paratitulo,autore ostatus. - Métodos (impl): Implemente métodos para criar um novo livro e para realizar um empréstimo (mudando o status).
🚀 Guia de Execução
- 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.