Echo Writes Code

errors.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use errno::{ Errno };

use std::error::{ self };
use std::fmt::{ self };

pub type Result<T> = ::std::result::Result<T, Error>;

/// Errors that can be returned from the file locking API.
#[derive(Debug, Eq, PartialEq)]
pub enum Error {
	/// An exclusive lock is already held on the file. Returned only for the
	/// nonblocking API
	/// ([`try_lock_shared()`](crate::file_ext::FileExt::try_lock_shared()) and
	/// [`try_lock_exclusive`](crate::file_ext::FileExt::try_lock_exclusive())).
	AlreadyLocked,

	/// The underlying locking primitive returned an error.
	LockFailed(#[doc(hidden)] Errno),
}

impl fmt::Display for Error {
	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
		use Error::*;

		match *self {
			AlreadyLocked => write!(f, "Already locked"),
			LockFailed(e) => write!(f, "Locking failed: {}", e),
		}
	}
}

impl error::Error for Error {}