Vladimir
Фьюча ж где-то юзает это в качестве ретурн параметра?
Vladimir
a.or(b) или нет такого?
Loyd
https://docs.rs/futures/0.2.1/futures/future/enum.Either.html
Loyd
А, лол. Это таки реекспорт
Loyd
Чёт дока странная: показывается как часть futures, а [src] ведёт на either крейт
Αλεχ
https://github.com/rust-lang/rfcs/issues/2414
Αλεχ
кстати ставьте плюсы
Αλεχ
моя идея про то чтобы impl Trait работал со всеми типами обобщили и сделали реально удобно
Αλεχ
не успел макрос запилить(
Маjко
Мне идея с процедурным макросом enumify еравится больше, чем расширение синтаксиса
Αλεχ
так я собирался его писать
Αλεχ
проблема с макросом, что IDE забъет йух на всё, чт овнутри
Αλεχ
а это не очень удобно
պլհկ
idea driven development
Маjко
Ага
Маjко
Пусть инструментарий пилят, а не в язык пихают, ИМХО
Маjко
Один йух поддержка процедурных макросов нужна
Маjко
Но для этого @vlad20012 придется писать интерпретатор раста бгг
Vlad
Что там?
Маjко
С другой стороны там можно и на borrowck забить чуть более чем полностью
Vlad
Никто не мешает собрать крейт процедурного макроса и дернуть его из IDE
Маjко
У вас токены полностью совместимы?
Vlad
У вас токены полностью совместимы?
Взять текстом и лексер родной дернуть
Маjко
Я думал, это считается у вас хуевым подходом
Маjко
Тогда можно вообще компилятор просто дергать и не париться со своим парсером)
Vlad
Сейчас есть костылейпрототип, который вообще эпично работает - выдергивает структуру под custom derive, кладет его текст в отдельный файл, собирает вокруг него cargo project со всеми зависимостями и запускает --pretty=expanded
Vlad
Тогда можно вообще компилятор просто дергать и не париться со своим парсером)
Так в нормальном варианте парсер дергать и не надо - только лексер.
Αλεχ
https://github.com/Nemo157/impl_sum
Маjко
@vlad20012 а ты на фуллтайме над растоплагином работаешь?
Max
https://blog.rust-lang.org/2018/08/02/Rust-1.28.html
Маjко
Да
Зоебись, спасибо intellij
Loyd
Ещё одно ключевое слово
Cat
Ещё одно ключевое слово
Какое? В упор не вижу
Loyd
become жеж
𝙽𝚒𝚌𝚔
become жеж
ну это один из вариантов, явно не самый удачный, просто до кучи приведён
Loyd
Ну там в ишью и дальше такое направление мысли
Cat
become жеж
А, я чёто подумал, что ты про релиз 1.28
պլհկ
падажжите, я запутался в методичке, в try { } ключевое слово хейтим (потому что центрил), become не хейтим потому что @Psilon?
Loyd
Двоемыслие, чо
Маjко
Нахуй новый синтаксис там где можно аттрибутом обойтись
Loyd
В лучших традициях Оруэлла
Маjко
Атрибутом к чему?
К функции, очевидно
Αλεχ
а вообще да, я не центрил
Berkus
Αλεχ
К функции, очевидно
я выше макрос кинул. Он не может полностью все кейзы покрыть
Маjко
Маjко
become вообще непойми что значит
Αλεχ
Тогда лучше на возвращаемом значении
процедурный макрос без костыля со стороны компилятора не может сделать преобразование
Loyd
Хотя проще реализацию посмотреть
Αλεχ
https://github.com/Nemo157/impl_sum
Loyd
https://github.com/Nemo157/impl_sum
Не, я имел в виду, какой кейс не может
Αλεχ
там в ридми написано
Αλεχ
ты читал?)
Loyd
Нет, каюсь
Loyd
Сразу в examples полез
Loyd
Ну там же всегда самое вкусное
Loyd
Оу. Довольно серьёзные ограничения
Marat
А почему NonZero числа занимают на 1 байт меньше места когда внутри енама или стракта лежат?
Cuno
А почему NonZero числа занимают на 1 байт меньше места когда внутри енама или стракта лежат?
Разве? Там разве что для Option оптимизация возможна - использовать 0 как None
Cuno
собственно об этом и дока говорит
Marat
This allows for size optimization, for example, Option<u8> is two bytes large, but Option<NonZeroU8> is just one byte large. Note that this optimization remains even when NonZeroU8 is wrapped inside another struct; the example below illustrates that Door is still 1 byte large despite being placed inside an Option. This optimization applies to user-defined enums as well: Option is not special.
Cuno
Ну там тривиальный кейс совсем. По сути Door и есть NonZeroU8
Cuno
Если хоть что-то добавить то оптимизация уже невозможна: https://play.rust-lang.org/?gist=637f27ca1879d5b612f47bdb87508f9e&version=nightly&mode=debug&edition=2015
Cuno
ХМ
Cuno
таки оптимизирует
Cuno
Ну неплохо
Marat
Так я что-то не понял что произошло, почему он два байта?