172 похожих чатов

Вот когдато обсуждали это и я думал, а какже это

работает.

не доходили руки потестировать. а оказалось)) этим и пользоватся то нельзя как это нам хотелось.

а вот где собака)


1. если не описывать этот type вообще, выходит это
error: could not find defining uses
--> src/lib.rs:3:1
|
3 | type TypeMyTrait = impl MyTrait;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to previous error

error: could not compile `playground`.

2. ладно ок, опишем его для типа

#![feature(type_alias_impl_trait)]

pub type TypeMyTrait = impl MyTrait;

pub trait MyTrait {}
impl<A, T> MyTrait for (A, T) {}


pub fn empty() -> TypeMyTrait {
(0, 0)
}

все нормально так,

3. теперь реально начинаем использовать это

#![feature(type_alias_impl_trait)]

pub type TypeMyTrait = impl MyTrait;

pub trait MyTrait {}
impl<A, T> MyTrait for (A, T) {}
impl MyTrait for () {}

pub fn empty() -> TypeMyTrait {
(0, 0)
}

pub fn empty2() -> TypeMyTrait {
()
}

и хоба,

error: concrete type differs from previous defining opaque type use
--> src/lib.rs:13:1
|
13 | / pub fn empty2() -> TypeMyTrait {
14 | | ()
15 | | }
| |_^ expected `(i32, i32)`, got `()`
|
note: previous use here
--> src/lib.rs:9:1
|
9 | / pub fn empty() -> TypeMyTrait {
10 | | (0, 0)
11 | | }
| |_^


говорили от box избавит и от <T> ?:)
нет, просто один виртуальный тип (impl) на всю прогу будет действительно как тип, но один на один тип.

использовать можно, но узконаправленно.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=2f00075b6727d8b89897daa3fb485e3f

1 ответов

3 просмотра

Так мы этого и хотели )

Похожие вопросы

Обсуждают сегодня

Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
1
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Или ты челендж хочешь?
Ilya Shvechikov
7
Карта сайта