From 4ee19174e5f475181fb44fd6be3f996de6f340f7 Mon Sep 17 00:00:00 2001 From: Priec Date: Sun, 1 Feb 2026 23:42:19 +0100 Subject: [PATCH] daj knihy autora --- src/logic.rs | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/src/logic.rs b/src/logic.rs index 889c291..ef95a6d 100644 --- a/src/logic.rs +++ b/src/logic.rs @@ -2,8 +2,6 @@ use serde::{Deserialize, Serialize}; use std::fmt; -use std::fs; -use std::error::Error; #[derive(Default, Serialize, Deserialize, PartialEq)] enum Stav { @@ -93,14 +91,45 @@ impl Kniznica { } fn pridaj_knihu(&mut self, nova_kniha: Kniha) -> Result<(), ()> { - if (&self.knihy).len() > 0 { - for x in &self.knihy { - if x.isbn == nova_kniha.isbn { - return Err(()); - } + for x in &self.knihy { + if x.isbn == nova_kniha.isbn { + return Err(()); } } self.knihy.push(nova_kniha); Ok(()) } + + fn pridaj_knihu2(&mut self, nova_kniha: Kniha) -> Result<(), ()> { + let moze = self.knihy.iter() + .all(|x| x.isbn != nova_kniha.isbn); + if moze { + self.knihy.push(nova_kniha); + } else { + return Err(()); + } + Ok(()) + } + + fn odstran_knihu(&mut self, isbn: &str) -> Result { + if let Some(index) = self.knihy.iter() + .position(|x| x.isbn == isbn) { + let kniha = self.knihy.remove(index); + Ok(kniha) + } else { + Err(()) + } + + } + + fn daj_knihu_podla_isbn(&self, isbn: &str) -> Option<&Kniha> { + if let Some(vrat) = self.knihy.iter().find(|x| x.isbn == isbn) { + return Some(vrat); + } + None + } + + fn daj_knihy_podla_stavu(&self, stav_knihy: Stav) -> Vec<&Kniha> { + self.knihy.iter().filter(|x| x.stav_knihy == stav_knihy).collect() + } }