| //! Advisory reader-writer locks for files. |
| //! |
| //! # Notes on Advisory Locks |
| //! |
| //! "advisory locks" are locks which programs must opt-in to adhere to. This |
| //! means that they can be used to coordinate file access, but not prevent |
| //! access. Use this to coordinate file access between multiple instances of the |
| //! same program. But do not use this to prevent actors from accessing or |
| //! modifying files. |
| //! |
| //! # Example |
| //! |
| //! ```no_run |
| //! # use std::io; |
| //! use std::io::prelude::*; |
| //! use std::fs::File; |
| //! use fd_lock::RwLock; |
| //! |
| //! # fn main() -> io::Result<()> { |
| //! // Lock a file and write to it. |
| //! let mut f = RwLock::new(File::open("foo.txt")?); |
| //! write!(f.write()?, "chashu cat")?; |
| //! |
| //! // A lock can also be held across multiple operations. |
| //! let mut f = f.write()?; |
| //! write!(f, "nori cat")?; |
| //! write!(f, "bird!")?; |
| //! # Ok(()) } |
| //! ``` |
| |
| #![forbid(future_incompatible)] |
| #![deny(missing_debug_implementations, nonstandard_style)] |
| #![cfg_attr(doc, warn(missing_docs, rustdoc::missing_doc_code_examples))] |
| |
| mod read_guard; |
| mod rw_lock; |
| mod write_guard; |
| |
| pub(crate) mod sys; |
| |
| pub use read_guard::RwLockReadGuard; |
| pub use rw_lock::RwLock; |
| pub use write_guard::RwLockWriteGuard; |