Size: a a a

2020 April 21

DS

Doge Shibu in rust_offtopic
Не в обьявлении
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
я сходу не могу придумать как это реализовать в компиляторе. разные типы возвращать из одной функции. вряд ли когда-то будет.
источник

AZ

Alex Zhukovsky in rust_offtopic
как пример
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Так мне это нужно в реализации трейта, очевидно же
тогда тем более: в чем проблема написать конкретный тип? ты знаешь в реализации какой у тебя тип.
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
и в чем проблема писать
type Foo: Trait;
?
Мне нужно именно вот это

impl MyTrait {
  type MyWtf = impl Wtf;

 fn bla_bla(...) -> Self::MyWtf
}
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
тогда тем более: в чем проблема написать конкретный тип? ты знаешь в реализации какой у тебя тип.
Потому что, например, это итератор с описанием типа длиной в пару страниц
источник

DS

Doge Shibu in rust_offtopic
Именно для этого и нужны impl трейты в данной ситуации
источник

DS

Doge Shibu in rust_offtopic
Чтобы избежать необходимости писать кучу текста, который ты не факт, что напишешь тупо из-за генерации уникальных типов для замыканий
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Потому что, например, это итератор с описанием типа длиной в пару страниц
у тебя что-то не так, если ты возвращаешь итератор с описанием в пару страниц
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
у тебя что-то не так, если ты возвращаешь итератор с описанием в пару страниц
В любом другом языке я могу это сделать спокойно.
источник

p

polunin.ai in rust_offtopic
Doge Shibu
В любом другом языке я могу это сделать спокойно.
а в с++ я могу разыменовать нулевой указатель
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
у тебя что-то не так, если ты возвращаешь итератор с описанием в пару страниц
Это нормальная практика - возвращать итератор, чтобы потребители трейта могли им воспользоваться
источник

DS

Doge Shibu in rust_offtopic
Например, с теми же генераторами это будет отлично работать
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
у тебя что-то не так, если ты возвращаешь итератор с описанием в пару страниц
Как пример - я хочу вернуть итератор, который обходит несколько коллекций и чейнится из них и маппит результаты

Сейчас - если ты хочешь его вернуть из трейта - это либо бокс (что плохо для итератора и оптимизаций), либо ручное написание кучу бойлерплейта в типах, либо написание своего итератора под этот кейс
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
у тебя что-то не так, если ты возвращаешь итератор с описанием в пару страниц
давай не в пару страниц. Допустим у меня такой код:

fn main() {
   let y = 20;
   let x = (1..10).map(|i| i + y);
}


Как мне венрнуть итератор типа std::iter::Map<std::ops::Range<{integer}>, [closure@src/main.rs:3:29: 3:38 y:_]> из трейта?
источник

AZ

Alex Zhukovsky in rust_offtopic
офк без бокса или собирания в вектор
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
давай не в пару страниц. Допустим у меня такой код:

fn main() {
   let y = 20;
   let x = (1..10).map(|i| i + y);
}


Как мне венрнуть итератор типа std::iter::Map<std::ops::Range<{integer}>, [closure@src/main.rs:3:29: 3:38 y:_]> из трейта?
вынести тип из ассоциированного в генерик
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
вынести тип из ассоциированного в генерик
Очень удобно будет так код писать.

Т.е. вся архитектура и инкапсуляция перекорёжились из-за того, что impl трейты не доделаны. О чём я тут и говорю.
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
вынести тип из ассоциированного в генерик
можно пример? А то я что-то плохо представляю себе
источник

AZ

Alex Zhukovsky in rust_offtopic
что я в этот генерик напишу?
источник