#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. Спасибо, это именно то, чего я хотел!