67 lines
1.7 KiB
ReStructuredText
67 lines
1.7 KiB
ReStructuredText
===========
|
|
Quick Error
|
|
===========
|
|
|
|
:Status: production-ready
|
|
:Documentation: http://tailhook.github.io/quick-error/
|
|
|
|
A macro which makes error types pleasant to write.
|
|
|
|
Features:
|
|
|
|
* Define enum type with arbitrary parameters
|
|
* Concise notation of ``Display`` and ``Error`` traits
|
|
* Full control of ``Display`` and ``Error`` trait implementation
|
|
* Any number of ``From`` traits
|
|
* Support for all enum-variants ``Unit``, ``Tuple`` and ``Struct``
|
|
|
|
Here is the comprehensive example:
|
|
|
|
.. code-block:: rust
|
|
|
|
quick_error! {
|
|
#[derive(Debug)]
|
|
pub enum IoWrapper {
|
|
Io(err: io::Error) {
|
|
from()
|
|
display("I/O error: {}", err)
|
|
cause(err)
|
|
}
|
|
Other(descr: &'static str) {
|
|
display("Error {}", descr)
|
|
}
|
|
IoAt { place: &'static str, err: io::Error } {
|
|
cause(err)
|
|
display(me) -> ("io error at {}: {}", place, err)
|
|
from(s: String) -> {
|
|
place: "some string",
|
|
err: io::Error::new(io::ErrorKind::Other, s)
|
|
}
|
|
}
|
|
Discard {
|
|
from(&'static str)
|
|
}
|
|
}
|
|
}
|
|
|
|
=======
|
|
License
|
|
=======
|
|
|
|
Licensed under either of
|
|
|
|
* Apache License, Version 2.0, (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
|
|
* MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT)
|
|
|
|
at your option.
|
|
|
|
------------
|
|
Contribution
|
|
------------
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally
|
|
submitted for inclusion in the work by you, as defined in the Apache-2.0
|
|
license, shall be dual licensed as above, without any additional terms or
|
|
conditions.
|
|
|