1use std::error;
2use std::fmt;
3
4/// Errors that can occur during code generation.
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub 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
16impl 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
30impl error::Error for Error {}
31
32/// A `Result` of `T` or an error of `bindgen::codegen::error::Error`.
33pub type Result<T> = ::std::result::Result<T, Error>;
34