1 | use std::error; |
2 | use std::fmt; |
3 | |
4 | /// Errors that can occur during code generation. |
5 | #[derive (Clone, Debug, PartialEq, Eq)] |
6 | pub enum Error { |
7 | /// Tried to generate an opaque blob for a type that did not have a layout. |
8 | NoLayoutForOpaqueBlob, |
9 | |
10 | /// Tried to instantiate an opaque template definition, or a template |
11 | /// definition that is too difficult for us to understand (like a partial |
12 | /// template specialization). |
13 | InstantiationOfOpaqueType, |
14 | } |
15 | |
16 | impl fmt::Display for Error { |
17 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
18 | f.write_str(data:match *self { |
19 | Error::NoLayoutForOpaqueBlob => { |
20 | "Tried to generate an opaque blob, but had no layout" |
21 | } |
22 | Error::InstantiationOfOpaqueType => { |
23 | "Instantiation of opaque template type or partial template \ |
24 | specialization" |
25 | } |
26 | }) |
27 | } |
28 | } |
29 | |
30 | impl error::Error for Error {} |
31 | |
32 | /// A `Result` of `T` or an error of `bindgen::codegen::error::Error`. |
33 | pub type Result<T> = ::std::result::Result<T, Error>; |
34 | |