pub struct FolderCompressor { /* private fields */ }Expand description
Compressor struct for a directory.
Implementations§
Source§impl FolderCompressor
impl FolderCompressor
Sourcepub fn new<O: AsRef<Path>, D: AsRef<Path>>(source_path: O, dest_path: D) -> Self
pub fn new<O: AsRef<Path>, D: AsRef<Path>>(source_path: O, dest_path: D) -> Self
Create a new FolderCompressor instance.
Just needs source directory path and destination directory path.
If you do not set the quality calculation function,
it will use the default calculation function which sets the quality only by the file size.
Likewise, if you do not set the number of threads, only one thread is used by default.\
§Examples
use image_compressor::FolderCompressor;
use std::path::Path;
let source = Path::new("source");
let dest = Path::new("dest");
let comp = FolderCompressor::new(source, dest);Sourcepub fn set_factor(&mut self, factor: Factor)
pub fn set_factor(&mut self, factor: Factor)
Set Factor using to compress images.
Sourcepub fn set_delete_source(&mut self, to_delete: bool)
pub fn set_delete_source(&mut self, to_delete: bool)
Set whether to delete source files.
Sourcepub fn set_sender(&mut self, sender: Sender<String>)
pub fn set_sender(&mut self, sender: Sender<String>)
Set Sender for message passing. If you set a sender, the method sends messages whether compressing is complete.
Sourcepub fn set_thread_count(&mut self, thread_count: u32)
pub fn set_thread_count(&mut self, thread_count: u32)
Setter for the number of threads used to compress images.
§Examples
use image_compressor::FolderCompressor;
use image_compressor::Factor;
use std::path::Path;
let source = Path::new("source");
let dest = Path::new("dest");
let mut comp = FolderCompressor::new(source, dest);
comp.set_thread_count(4);Sourcepub fn compress(self) -> Result<(), Box<dyn Error>>
pub fn compress(self) -> Result<(), Box<dyn Error>>
Folder compress function.
The function will compress all images, using multithreading, in a given source folder and will wait until everything is done.
If user set a Sender for FolderCompressor before, the method sends messages whether compressing is complete.
§Warning
Since this function consume its self, the FolderCompressor instance (which is self) is no longer available after calling this function.
use std::path::PathBuf;
use std::sync::mpsc;
use image_compressor::FolderCompressor;
let source = PathBuf::from("source_dir");
let dest = PathBuf::from("dest_dir");
let (tx, tr) = mpsc::channel();
let mut comp = FolderCompressor::new(source, dest);
comp.set_sender(tx);
comp.set_thread_count(4);
match comp.compress(){
Ok(_) => {},
Err(e) => println!("Cannot compress the folder: {}", e),
}Auto Trait Implementations§
impl Freeze for FolderCompressor
impl RefUnwindSafe for FolderCompressor
impl Send for FolderCompressor
impl Sync for FolderCompressor
impl Unpin for FolderCompressor
impl UnwindSafe for FolderCompressor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more