Vladimir
Можно подумать это мало
По этому и пример попросил
Vladimir
руби библиотека
Теперь пример в расте можно, хоть псевдокод?
Anonymous
эмм
Anonymous
зачем?
Anonymous
логика та же
Vladimir
Во первых я не понимаю руби, темболее по части док
Vladimir
Во вторых сложно представить константный логгер
Anonymous
а там не только логгер, заметил?
Мерль
Во первых я не понимаю руби, темболее по части док
Это нужно когда у нас какие-то специфичные магические числа И их раньше можно было хранить только на уровне модуля, а теперь их можно ассоциировать с нужной структурой
Мерль
Или не числа, а магические строки
Мерль
Или магические флаги
Мерль
Ну вы поняли
Anonymous
а там только числа что ли?
Vladimir
а там не только логгер, заметил?
Тайпалиас цвета, и не понятно зачем формат в публичной константе и
доня.
associated consts несовместимы с trait objects :c
Anonymous
но какая разница ?
Vladimir
магияя
Вот вот, только про магию и речь
Anonymous
как будто пилить функции для постоянных значений лучше
Vladimir
А я говорю про то, что магии должно быть немного, само собой они найдут свою нишу, но так ли много публичной магии должно торчать в либе
Мерль
Вот вот, только про магию и речь
Ну а какие ещё бывают числовые константы? Это обычно какая-то магия
Vladimir
А вот еслиб константные функции завезли, или еслиб эти константы можно было б юзать в размерах массивов, пользы было б больше
Anonymous
вроде же любые константы могут быть
Anonymous
включая const fn
Vladimir
Может и можно, но в ограниченной области, т.е. если у тебя тип типизируется трейтом с константой, то эта константа в компайлтайме почти излесс
պլհկ
не все сразу
доня.
там кстати баг походу
доня.
в найтли на play.rust-lang.org по крайней мере
доня.
ща потестю в новой stable
Vladimir
не все сразу
Я собственно и говорю, что на многое нельзя надеяться, вот и хотел пример
доня.
ща, секунду
պլհկ
на плей еще старый компилер походу
доня.
с новой stable тоже самое
доня.
trait Foo { const FOO: i32; } struct Bar; impl Foo for Bar { const FOO: i32 = 42; } fn baz<T: Foo>() -> i32 { let arr = [0i32; <T as Foo>::FOO as usize]; T::FOO } fn main() { let arr = [0i32; <Bar as Foo>::FOO as usize]; println!("{}", baz::<Bar>()); }
Vladimir
на плей еще старый компилер походу
С генераторами?, Найтли там точно поддерживает ассоциативные типы
доня.
падает с ошибкой, якобы Foo не заимплеменчен для T
доня.
в baz
Vladimir
А ошибка да, херня
доня.
нуу так а почему оно не работает?
Vladimir
Почитай пр
доня.
вот в main норм всё с объявлением массива
доня.
а если дженерик, то уже не норм
Vladimir
Там в нем написанное прямым текстом, что не будет раьотать
Vladimir
В мейне явный тип
Vladimir
В дженерике неявный, типа размер массивов выводится до того, как проверяется соответствие типов (видимо)
պլհկ
С генераторами?, Найтли там точно поддерживает ассоциативные типы
Compiling playground v0.0.1 (file:///playground) error: associated constants are experimental (see issue #29646)
պլհկ
стейбл старый
доня.
и они не собираются даже в будущем это менять?
доня.
тому що это всё-таки как-то неоч
Vladimir
и они не собираются даже в будущем это менять?
Ну в пр там специальная галочка стоит, мол это фича
Vladimir
А там они наверное это завезут не раньше чем генерик константы
Vladimir
Потому что если реализовать массивы, то женнерик константы почти не нужны будут х)
Anonymous
почему нет
Vladimir
Ну блин trait Number {const VALUE:usize} многие кейсы с извращением покроет
Loo
эм
Loo
ну ок
Маjко
Это ты из прошлого?
Loo
вроде нет
պլհկ
Anton
Открою новый тред даунских вопросов после решения предыдущего
Anton
также относительно токио
Anton
как заюзать петуханский Promise.all из жыэс но в токио
Anton
как собрать несколько задач одинаковых сбилдить и отправить их в реактор
Anton
Anton
Просто токио слишком большой, я тут в референсах уже запутался
Loo
join_all
Loo
собирает вектор футур в футуру
պլհկ
https://docs.rs/futures/0.1.15/futures/future/fn.join_all.html
Loo
далее через реактор раннишь её
Anton
оказалось кстати по прошлому вопросу ответ в 2 слова что дал поляков и оказался верным
Anton
все прошло почти по маслу