rvimage 0.6.8

A remote image viewer with a labeling tool
Documentation
use std::marker::PhantomData;

use crate::types::{AsyncResultImage, ImageInfoPair};

use super::{Cache, ReadImageToCache};
use rvimage_domain::{RvResult, rverr};

pub struct NoCache<RTC, RA>
where
    RTC: ReadImageToCache<RA>,
{
    reader: RTC,
    reader_args_phantom: PhantomData<RA>,
}
impl<RTC: ReadImageToCache<RA>, RA> Cache<RA> for NoCache<RTC, RA> {
    fn load_if_in_cache(&mut self, selected_file_idx: usize, files: &[&str]) -> AsyncResultImage {
        let path = files
            .get(selected_file_idx)
            .ok_or_else(|| rverr!("file with idx {selected_file_idx} does not exist"))?;
        self.reader.read(path).map(|im| {
            Some(ImageInfoPair {
                im,
                info: self
                    .reader
                    .file_info(path)
                    .unwrap_or_else(|_| "".to_string()),
            })
        })
    }
    fn load_into_cache(
        &mut self,
        _selected_file_idx: usize,
        _abs_file_paths: &[&str],
    ) -> RvResult<bool> {
        Ok(true)
    }
    fn load_from_cache(
        &mut self,
        selected_file_idx: usize,
        abs_file_paths: &[&str],
    ) -> AsyncResultImage {
        self.load_if_in_cache(selected_file_idx, abs_file_paths)
    }
    fn ls(&self, folder_path: &str) -> RvResult<Vec<String>> {
        self.reader.ls(folder_path)
    }
    fn new(args: RA) -> RvResult<Self> {
        Ok(Self {
            reader: RTC::new(args)?,
            reader_args_phantom: PhantomData,
        })
    }
    fn size_in_mb(&mut self) -> f64 {
        0.0
    }
    fn clear(&mut self) -> RvResult<()> {
        Ok(())
    }
    fn toggle_clear_on_close(&mut self) {}
}