daj knihy autora

This commit is contained in:
Priec
2026-02-01 23:42:19 +01:00
parent bcb2223587
commit 4ee19174e5

View File

@@ -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(());
}
}
}
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<Kniha, ()> {
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()
}
}