Re: характеристики в векторе
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.07.23 08:06
Оценка: 4 (1) +1
Здравствуйте, sergii.p, Вы писали:

SP>задача: есть некие индикаторы, которые можно рассчитать. Но каждый индикатор может вернуть также разнородные данные. От этих данных требуется, чтобы они поддерживали только std::fmt::Display. Например, имя человека и его термпература (разные методы расчёта, разные возвращаемые типы).

SP>Надо это всё засунуть в вектор.

SP>
SP>trait Indicator {
SP>    type Type: std::fmt::Display; // возвращаемый тип
SP>    fn calc(&self) -> Box<Self::Type>; // функция для расчёта. Хотелось бы возвращать не Box, но вроде это невозможно
SP>}
SP>


SP>Текущая проблема — не компилируется. Не понимаю как описать тип вектора.

SP>https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2021&amp;gist=431cf11e95deba8ebd60740b1764d791

dyn в расте не обладает вариантностью. То есть если T1: T2, то dyn T1 никак не связан с dyn T2

Поэтому надо от типа внутри трейта избавится и возвращать из calc просто Box<dyn Display>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.