pub struct FileLock {
pub file: File,
}Expand description
Represents the actually locked file
Fields§
§file: Filethe std::fs::File of the file that’s locked
Implementations§
source§impl FileLock
impl FileLock
sourcepub fn lock<P: AsRef<Path>>(
path: P,
is_blocking: bool,
options: FileOptions
) -> Result<FileLock, Error>
pub fn lock<P: AsRef<Path>>( path: P, is_blocking: bool, options: FileOptions ) -> Result<FileLock, Error>
Try to lock the specified file
Parameters
path is the path of the file we want to lock on
is_blocking is a flag to indicate if we should block if it’s already locked
options is a mutable reference to a std::fs::OpenOptions object to configure the underlying file
Examples
extern crate file_lock;
use file_lock::{FileLock, FileOptions};
use std::fs::OpenOptions;
use std::io::prelude::*;
fn main() {
let should_we_block = true;
let options = FileOptions::new()
.write(true)
.create(true)
.append(true);
let mut filelock = match FileLock::lock("myfile.txt", should_we_block, options) {
Ok(lock) => lock,
Err(err) => panic!("Error getting write lock: {}", err),
};
filelock.file.write_all(b"Hello, World!").is_ok();
}sourcepub fn unlock(&self) -> Result<(), Error>
pub fn unlock(&self) -> Result<(), Error>
Unlock our locked file
Note: This method is optional as the file lock will be unlocked automatically when dropped
Examples
extern crate file_lock;
use file_lock::{FileLock, FileOptions};
use std::io::prelude::*;
fn main() {
let should_we_block = true;
let lock_for_writing = FileOptions::new().write(true).create(true);
let mut filelock = match FileLock::lock("myfile.txt", should_we_block, lock_for_writing) {
Ok(lock) => lock,
Err(err) => panic!("Error getting write lock: {}", err),
};
filelock.file.write_all(b"Hello, World!").is_ok();
match filelock.unlock() {
Ok(_) => println!("Successfully unlocked the file"),
Err(err) => panic!("Error unlocking the file: {}", err),
};
}Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for FileLock
impl Send for FileLock
impl Sync for FileLock
impl Unpin for FileLock
impl UnwindSafe for FileLock
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
Mutably borrows from an owned value. Read more