Как я могу добавить функциональность to_string () в enum? - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь создать Error перечисления, которые реализуют to_string().Я попытался derive(Debug) для них, но этого, похоже, недостаточно.

Вот перечисление, над которым я работаю:

#[derive(Debug, Clone)]
pub enum InnerError {
    InnerErrorWithDescription(String),
}

#[derive(Debug, Clone)]
pub enum OuterError {
    OuterErrorWithDescription(String),
}

Что я пытаюсь сделатьэто:

// result type <T,InnerErrorWithDescription>
result.map_err(|err| { Error::OuterErrorWithDescription(err.to_string())}) // .to_string() is not available

Мне не удалось преобразовать тип перечисления InnerError в OuterError.

Что я должен изменить, чтобы реализовать его?

Я сделалпример написания перечислимых типов и их значений здесь:

Rust Playground

Но, все же мне пришлось указать тип и его описание в случае совпадения, есть либолее общая реализация?

1 Ответ

0 голосов
/ 09 октября 2018

Ваше перечисление должно реализовать DisplayToString документы:

Эта черта автоматически реализуется для любого типа, который реализует черту Display.Таким образом, ToString не должен быть реализован напрямую: вместо него должен быть реализован Display, и вы получите реализацию ToString бесплатно.

Редактировать: я настроил пример вашей игровой площадки;Я думаю, что вы могли бы после чего-то , как это .

...