diff --git a/JR-priprava-na-skusku6/src/lib.rs b/JR-priprava-na-skusku6/src/lib.rs index b9e69a7..9ce229e 100644 --- a/JR-priprava-na-skusku6/src/lib.rs +++ b/JR-priprava-na-skusku6/src/lib.rs @@ -78,6 +78,30 @@ impl Filmoteka { result } + fn nacitaj(cesta: &str) -> Result { + std::fs::read_to_string(cesta) + } + + fn nacitaj2(cesta: &str) -> bool { + std::fs::read_to_string(cesta).is_ok() + } + + fn nacitaj3(cesta: &str) -> Result { + match std::fs::read_to_string(cesta) { + Ok(obsah) => Ok(obsah), + Err(err) => Err(err.to_string()), + } + } + + fn parsuj_cislo(text: &str) -> Option { + let x = text.parse::(); + x.ok() + } + + fn parsuj_cislo2(text: &str) -> Option { + text.parse::().ok() + } + pub fn uloz_do_suboru(&self, cesta: &std::path::PathBuf) -> bool { let Ok(json) = serde_json::to_string_pretty(&self) else { return false; @@ -86,3 +110,22 @@ impl Filmoteka { } } + +impl Film { + pub fn new( + nazov: &str, + reziser: &str, + rok: u16, + zaner: Zaner, + hodnotenie: f32 + ) -> Option { + if hodnotenie < 0.0 || hodnotenie > 10.0 { + return None; + }; + return Some(Self { + nazov: nazov.to_string(), + reziser: reziser.to_string(), + rok, zaner, hodnotenie + }) + } +} diff --git a/JR-priprava-na-skusku6/src/main.rs b/JR-priprava-na-skusku6/src/main.rs index 85aad77..3211c9a 100644 --- a/JR-priprava-na-skusku6/src/main.rs +++ b/JR-priprava-na-skusku6/src/main.rs @@ -1,5 +1,58 @@ fn main() { - println!("Hello, world!"); + match std::fs::read_to_string("subor.txt") { + Ok(x) => print!("{x}"), + Err(y) => print!("{y}"), + }; } +fn nacitaj_a_parsuj(cesta: &str) -> Result> { + let obsah = match std::fs::read_to_string(cesta) { + Ok(s) => s, + Err(e) => return Err(Box::new(e)), + }; + let cislo = match obsah.trim().parse::() { + Ok(n) => n, + Err(e) => return Err(Box::new(e)), + }; + Ok(cislo) +} +fn nacitaj_a_parsuj2(cesta: &str) -> Result> { + let obsah = std::fs::read_to_string(cesta)?; + let cislo = obsah.trim().parse::()?; + Ok(cislo) +} + +fn prvy_sused(vektor: &[i32], index: usize) -> Option { + if index == 0 { + return None; + } + let predchadzajuci = index.checked_sub(1); + match predchadzajuci { + Some(i) => { + if i < vektor.len() { + Some(vektor[i]) + } else { + None + } + } + None => None, + } +} + +fn prvy_sused2(vektor: &[i32], index: usize) -> Option { + if index == 0 { + return None; + } + let predchadzajuci = index.checked_sub(1)?; + if predchadzajuci < vektor.len() { + return Some(vektor[predchadzajuci]); + } + None +} + +fn nacitaj_json(cesta: &str) -> Option> { + let nacitane = std::fs::read_to_string(cesta).ok()?; + let vec = serde_json::from_str::>(nacitane.as_str()); + Some(vec.ok()?) +}