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

А подскажите по какой причине нельзя из функции в трейте

вернуть трейт?

20 ответов

27 просмотров

Потому что трейт сам по себе это не тип

cevek- Автор вопроса
Ramtaic Natcher
Потому что трейт сам по себе это не тип

это же по сути фат поинтер, почему нельзя то

всм вернуть трейт

cevek
это же по сути фат поинтер, почему нельзя то

По сути трейт это не тип. А вот dyn трейт - это уже тип, хоть и безразмерный.

cevek- Автор вопроса
Ramtaic Natcher
По сути трейт это не тип. А вот dyn трейт - это уж...

не дает ни так trait X { fn foo() -> impl X; } ни так trait X { fn foo() -> dyn X; }

cevek
не дает ни так trait X { fn foo() -> impl X; ...

Предлагаю посмотреть на то, что пишет компилятор:/

cevek
не дает ни так trait X { fn foo() -> impl X; ...

1. во-первых у тебя не обжект сейф трейт 2. во-вторых вероятно нужен бокс

В первом случае ты возвращаешь анонимный тип, который имплементирует X.

cevek
не дает ни так trait X { fn foo() -> impl X; ...

trait X { type Foo: X; fn foo() -> Self::Foo; } Вероятно ты так хочешь написать

cevek- Автор вопроса
Ramtaic Natcher
В первом случае ты возвращаешь анонимный тип, кото...

мм, вот так еще работает trait X { fn foo(&self) -> dyn Y; } без селфа дает ошибку

cevek
мм, вот так еще работает trait X { fn foo(&sel...

потому что ни один язык в мире не разрешает писать статический виртуальный метод (в терминах ООП)

Ramtaic Natcher
В первом случае ты возвращаешь анонимный тип, кото...

Функции с impl Trait на месте возвращаемого типа в трейтах пока не завезли.

Ramtaic Natcher
Функции с impl Trait на месте возвращаемого типа в...

делается ассоц тип как я выше показал и в 99% случаях этого будет хватать

cevek
мм, вот так еще работает trait X { fn foo(&sel...

Разве оно вот так компилируется?

cevek- Автор вопроса
Ramtaic Natcher
Разве оно вот так компилируется?

трейт описать дает, но имплементировать не получается так

cevek
трейт описать дает, но имплементировать не получае...

Ну потому что возвращаемый тип из функции должен быть с определённым размером

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта