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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
use std; use toml; use url; use chrono; #[cfg(feature="sqlite")] use rusqlite; #[cfg(feature="postgresql")] use postgres; error_chain! { foreign_links { Io(std::io::Error); StringUtf8Error(std::string::FromUtf8Error); StrUtf8Error(std::str::Utf8Error); TomlDe(toml::de::Error); TomlSe(toml::ser::Error); UrlParse(url::ParseError); ChronoParse(chrono::ParseError); Sqlite(rusqlite::Error) #[cfg(feature="sqlite")]; Postgres(postgres::Error) #[cfg(feature="postgresql")]; } errors { Config(s: String) { description("ConfigError") display("ConfigError: {}", s) } Migration(s: String) { description("MigrationError") display("MigrationError: {}", s) } MigrationComplete(s: String) { description("MigrationComplete") display("MigrationComplete: {}", s) } MigrationNotFound(s: String) { description("MigrationNotFound") display("MigrationNotFound: {}", s) } ShellCommand(s: String) { description("ShellCommand") display("ShellCommandError: {}", s) } PathError(s: String) { description("PathError") display("PathError: {}", s) } TagError(s: String) { description("TagError") display("TagError: {}", s) } InvalidDbKind(s: String) { description("InvalidDbKind") display("InvalidDbKind: {}", s) } } } impl Error { pub fn is_migration_complete(&self) -> bool { match *self.kind() { ErrorKind::MigrationComplete(_) => true, _ => false, } } }