Означает ли то, что Error :: description является программно-устаревшим, я должен переписать свою текущую систему сообщений об ошибках? - PullRequest
0 голосов
/ 16 января 2020

Я заметил, что Rust мягко устарел Error::description. Рекомендуется использовать Display или to_string() для получения моих описаний ошибок, но означает ли это, что мне нужно переписать мои текущие системы сообщений об ошибках для обработки String вместо &str?

Я использую этот код, и я заметил дикий код, который выглядит примерно так:

fn description(&self) -> &str {
    match *self {
        Error::CannotDeriveFromHardenedKey => "cannot derive hardened key from public key",
        Error::Ecdsa(ref e) => error::Error::description(e),
        Error::RngError(_) => "rng error",
        Error::MnemonicError(_) => "mnemonic error",
    }
}

1 Ответ

2 голосов
/ 16 января 2020

означает ли это, что мне нужно переписать мои текущие системы сообщений об ошибках для обработки String вместо &str?

Нет, это означает, что новые или обновленные реализации из Error для ваших типов должны предпочтительно игнорировать метод description. Это означает, что не добавляйте fn description(&self) -> &str {} в вашу impl Error причину, что, по-видимому, является тем, что вы пытались сделать.

Реализация этого может все еще быть возможной в настоящее время, но по своей сути она ограничена возвращая &str, что действительно является ограниченной подписью.

Обратите внимание, что с Rust 1.42.0 этот метод теперь устарел .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...