(function() {var implementors = {};
implementors["encode_unicode"] = ["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.FromStrError.html\" title=\"enum encode_unicode::error::FromStrError\">FromStrError</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidCodePoint.html\" title=\"enum encode_unicode::error::InvalidCodePoint\">InvalidCodePoint</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf8FirstByte.html\" title=\"enum encode_unicode::error::InvalidUtf8FirstByte\">InvalidUtf8FirstByte</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf8.html\" title=\"enum encode_unicode::error::InvalidUtf8\">InvalidUtf8</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf8Array.html\" title=\"enum encode_unicode::error::InvalidUtf8Array\">InvalidUtf8Array</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf8Slice.html\" title=\"enum encode_unicode::error::InvalidUtf8Slice\">InvalidUtf8Slice</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf16Tuple.html\" title=\"enum encode_unicode::error::InvalidUtf16Tuple\">InvalidUtf16Tuple</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"encode_unicode/error/enum.InvalidUtf16Slice.html\" title=\"enum encode_unicode::error::InvalidUtf16Slice\">InvalidUtf16Slice</a>",];
implementors["log"] = ["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"struct\" href=\"log/struct.SetLoggerError.html\" title=\"struct log::SetLoggerError\">SetLoggerError</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"struct\" href=\"log/struct.ShutdownLoggerError.html\" title=\"struct log::ShutdownLoggerError\">ShutdownLoggerError</a>",];
implementors["nix"] = ["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"nix/enum.Errno.html\" title=\"enum nix::Errno\">Errno</a>","impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"nix/enum.Error.html\" title=\"enum nix::Error\">Error</a>",];
implementors["rustyline"] = ["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"rustyline/error/enum.ReadlineError.html\" title=\"enum rustyline::error::ReadlineError\">ReadlineError</a>",];
implementors["void"] = ["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"void/enum.Void.html\" title=\"enum void::Void\">Void</a>",];

            if (window.register_implementors) {
                window.register_implementors(implementors);
            } else {
                window.pending_implementors = implementors;
            }
        
})()
