Почему моя реализация TryFrom<Vec> не охватывает TryFrom><Vec>?

#rust #traits

Вопрос:

Когда я пытаюсь скомпилировать эту строку, opt.positionals = Positionals::try_from(opt.args).unwrap(); я получаю сообщение об ошибке о том, что черта не реализована. Эта черта должна быть реализована, хотя и в общем виде, как у меня TryFrom<Vec<T>>

Вот в чем ошибка,

 error[E0277]: the trait bound `Positionals: TryFrom<Vec<String>>` is not satisfied
  --> bin/seq.rs:83:20
   |
83 |     opt.positionals = Positionals::try_from(opt.args).unwrap();
   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `TryFrom<Vec<String>>` is not implemented for `Positionals`
   |
   = help: the following implementations were found:
             <Positionals as TryFrom<Vec<T>>>
 

И вот моя реализация этой черты,

 use std::convert::TryFrom;
impl<T: Debug   AsRef<String>   Into<String>   Clone> TryFrom<Vec<T>> for Positionals {
 

Почему моя реализация не TryFrom<Vec<T>> охватывает конкретный TryFrom<Vec<String>> вопрос и как я могу решить эту проблему?

Ответ №1:

String не реализует AsRef<String> . Вы могли бы использовать AsRef<str> или Borrow<String> вместо этого.

Комментарии:

1. Спасибо, это именно то, чего я хотел!