Есть ли способ объявить Result, который принимает тип, реализующий FromStr, как ошибку? - PullRequest
0 голосов
/ 05 июля 2018

Я хотел бы написать этот вид Result:

use std::result::Result;
use std::str::FromStr;

type MyResult<T> = Result<T, FromStr>; 

Это недействительно. Есть ли способ выразить это?

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете попробовать , чтобы выразить это как:

type MyResult<T, U: FromStr> = Result<T, U>;

Но компилятор будет жаловаться, что:

warning: bounds on generic parameters are not enforced in type aliases
 --> src/main.rs:4:21
  |
4 | type MyResult<T, U: FromStr> = Result<T, U>; 
  |                     ^^^^^^^
  |
  = note: #[warn(type_alias_bounds)] on by default
  = help: the bound will not be checked when the type alias is used, and should be removed

Что означает, что вы не должны делать это таким образом. Обратите внимание, однако, что FromStr уже содержит Result:

pub trait FromStr {
    type Err;
    fn from_str(s: &str) -> Result<Self, Self::Err>;
}

Может быть, вам стоит подумать об использовании напрямую?

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