Size: a a a

2020 February 02

AZ

Alex Zhukovsky in rust_offtopic
то что T/U окажутся одним типом A неважно, ты матчишься по match x { T(t) => ..., U(u) => ... }
источник

p

polunin.ai in rust_offtopic
Вафель
Ну это не значит что это для того чтобы тебе никогда енамы не приходилось использовать.

Точно так-же как туплы не полная замена структурам.

Для создания c-like енумов сокращённым синтаксисом, пришлось бы добавлять что-то вроде тэгов (не помню где точно, но врде в closure такое видел)



Альтернативно можно усложнить синтаксис, чтобы с матчем чисел не конфликтовало. Но я не думаю что неименованные c-like енамы это так полезно.
Поэтому я и предлагал только типам дать возможность быть вариантами тип-сумм
источник

B

Bogdan in rust_offtopic
Alex Zhukovsky
1. матчишься по конструктору который совпадает с имеем типа
2. таскаешь тег чтобы различать варианты
В том то и фишка, что их различать не надо, если это для ерорхендлинга
источник

AZ

Alex Zhukovsky in rust_offtopic
а если не различать получается фигня
источник

G

Gymmasssorla in rust_offtopic
Alex Zhukovsky
то что T/U окажутся одним типом A неважно, ты матчишься по match x { T(t) => ..., U(u) => ... }
А какие имена конструкторов для i32 | i32?
источник

AZ

Alex Zhukovsky in rust_offtopic
Gymmasssorla
А какие имена конструкторов для i32 | i32?
такую запись просто не разрешать
источник

B

Bogdan in rust_offtopic
Gymmasssorla
А какие имена конструкторов для i32 | i32?
Т и U

Что нифига не удобно
источник

B

Bogdan in rust_offtopic
Ведь получатель будет знать что это i32
источник

В

Вафель in rust_offtopic
Alex Zhukovsky
такую запись просто не разрешать
Лишнее ограничение. Почему дженерикам можно, а просто так нельзя?

Мне больше с числами нравится (+ сочитается с синтаксисом туплов)
источник

G

Gymmasssorla in rust_offtopic
Думаю, по аналогии с кортежами можно было бы сделать .0 и .1. Для кортежей же не нужны имена полей)
источник

G

Gymmasssorla in rust_offtopic
Вафель
Лишнее ограничение. Почему дженерикам можно, а просто так нельзя?

Мне больше с числами нравится (+ сочитается с синтаксисом туплов)
+
источник

В

Вафель in rust_offtopic
Вафель
Лишнее ограничение. Почему дженерикам можно, а просто так нельзя?

Мне больше с числами нравится (+ сочитается с синтаксисом туплов)
плюс как ты передаш в функцию A | B -> ..., i32 | i32, если не можешь его записать?
источник

В

Вафель in rust_offtopic
Gymmasssorla
Думаю, по аналогии с кортежами можно было бы сделать .0 и .1. Для кортежей же не нужны имена полей)
Только точка там странно смотрится. Всё-таки это не поля.

Если добавлять символы, то ::, наверное
источник

p

polunin.ai in rust_offtopic
Ну по идеи тип-суммы это Either с большим числом вариантов
Так что можно просто взять схему Either и переделать для использования бОльшим числом вариантов
источник

AZ

Alex Zhukovsky in rust_offtopic
Вафель
Лишнее ограничение. Почему дженерикам можно, а просто так нельзя?

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

G

Gymmasssorla in rust_offtopic
Вафель
Только точка там странно смотрится. Всё-таки это не поля.

Если добавлять символы, то ::, наверное
match x {
   ::1 => ...,
}


)))
источник

В

Вафель in rust_offtopic
Alex Zhukovsky
если ты явно хочешь различать два варианта пиши честный энум
Сам же не хотел енамы писать 5 минут назад...
источник

В

Вафель in rust_offtopic
Gymmasssorla
match x {
   ::1 => ...,
}


)))
Ага, я об этом
источник

AZ

Alex Zhukovsky in rust_offtopic
Вафель
Сам же не хотел енамы писать 5 минут назад...
кейс когда тебе надо два одинаковых значения различать встречаются чуть реже чем никогда
источник

G

Gymmasssorla in rust_offtopic
Вафель
Ага, я об этом
Ну в Rust нет синтаксиса для доступа к произвольному варианту, так что не знаю
источник