𝙽𝚒𝚌𝚔
похоже ты прав
𝙽𝚒𝚌𝚔
надо подумать
Anonymous
вопрос на миллион
Anonymous
как в карго изменить тулчейн
𝙽𝚒𝚌𝚔
Значит можно было бы замутить do нотацию для футур. Но для итераторов по-прежнему импосибл
Anonymous
как в карго изменить тулчейн
т.е. ни override ни default, ни чистка из хоума на это не повлияли. Неделю назад rustup работал, а сейчас ub
Cat
как в карго изменить тулчейн
target-секция в карго конфиге
𝙽𝚒𝚌𝚔
А чего для итераторов импосибл? Чем impl Iterator не подходит?
Неэффективно наверное. Сейчас flat_map возвращает FlatMap<>, конкретный тип
саша
Этот конкретный тип точно также является impl Iterator
𝙽𝚒𝚌𝚔
Ну то есть компилятору нужно просто вывести конкретный тип итератора глядя на все map-ы и flat_map-ы и понять, сколько нужно памяти, тайпчекнуть борровинг и создать нужный конечный автомат, который и будет impl Iterator. Выглядит достаточно сложно.
Cat
(ответ на удалённое) Мне не очень помогли твои слова
Cat
что
(в ответ на удалённое) 1. раст/карго из пакетного менджера, карго/раст — нет 2. так пробовал
Cat
Cat
?
𝙽𝚒𝚌𝚔
Так и работает impl Trait. Тип известен компилятору, просто для юзера это нечто реализующее трейт
Я понимаю. Просто это выглядит достаточно сложно (и для компилятора, и для писателей его), поэтому в flat_map возвращает просто FlatMap (и другие операции тоже конкретные структуры). Возможно, обобщить это до impl Iterator достаточно трудно.
𝙽𝚒𝚌𝚔
Они возвращают конкретный флет мап, просто потому что писались когда не было импл трейтов
Считаешь сейчас бы сделали полностью на impl-ах и мы бы увидели do-нотацию в Расте? Эта идея ещё может быть отвергнута из-за очень неторопливой компиляции impl-ов.
Vladimir
Считаешь сейчас бы сделали полностью на impl-ах и мы бы увидели do-нотацию в Расте? Эта идея ещё может быть отвергнута из-за очень неторопливой компиляции impl-ов.
Не знаю что такое Ду нотация. Ещё одна проблема это то, что итератор это trait и импл в трейтах пока не возможен
Loo
https://github.com/hntd187/Toshi
Loo
https://github.com/chinedufn/percy
Loo
classic
Marat
https://github.com/hntd187/Toshi
Крутая идея, а то сфинкс сдох, а еластик память жрёт
Marat
Жаль только сдохнет скорее всего
Loo
Жаль только сдохнет скорее всего
не факт. тантиви не сдох же
Marat
Добавить памяти будет проще
Ну у него и другие проблемы есть. Там кластер развалиться может, данные проебутся и тд и тп
Marat
не факт. тантиви не сдох же
Все таки скоп задач разный. Ну было бы хорошо если бы допилили и был бы конкурент еластику
Marat
А то этих же проблем у Toshi не будет
Ну кто знает, может там чувак шарит
Alexander
Крутая идея, а то сфинкс сдох, а еластик память жрёт
Так прямой аналог сфинкса - Solr же, а не эластик?
Marat
Так прямой аналог сфинкса - Solr же, а не эластик?
Ну вообще я не знаю, только еластиком пользовался
Alexander
Ты там на енамах херачишь?
Конечно. И там, и там. ADT.
Маjко
Маjко
Не помогло?)
Alexander
Может, уже ссылку на репу скинуть? 😊
Маjко
Ну вообще с этого надо начинать 😁
Alexander
Не помогло?)
В смысле "компилируется и запускается" - помогло. В смысле "не переполняет стек и обгоняет Haskell" - нет. 😃
Alexander
https://github.com/gabriel-fallen/rusty-krivine
Маjко
Я кстати не уверен что рекурсивные енамы хаскелля на стеке аллоцируются
Αλεχ
Бокс
тогда это утечка, не?
Αλεχ
потому что 'static ссылку нельзя удалить
Cuno
https://github.com/gabriel-fallen/rusty-krivine
1. Компилируешь с --release я надеюсь? 2. Судя по тому что я вижу это на бенчмарк аллокатора похоже. Попробуй возьми slab (https://crates.io/crates/slab) и аллоцируй термы там.
Αλεχ
или я чего-то не понимаю
Vladimir
Бокс - это Хип, Хип - это статик. Вообще любой тип по значению -> статик лайфтайм
Αλεχ
если хип статик
Αλεχ
как деаллоцировать?
Vladimir
drop(box)
Αλεχ
просто для меня, два способа получить статическую переменную: 1. реф на const 2. lazy_static
Αλεχ
как из бокса получать статик ссылку яхз
Αλεχ
есть Box::leak
Αλεχ
но он как бы и подразумевает, что это утечка
Alexander
1. Компилируешь с --release я надеюсь? 2. Судя по тому что я вижу это на бенчмарк аллокатора похоже. Попробуй возьми slab (https://crates.io/crates/slab) и аллоцируй термы там.
1. Само собой! 😊 2. Спасибо, попробую. Но меня больше stack overfow из-за глубины рекурсии беспокоит. Подумал, можно eval_aux переписать в CPS и уменьшить рекурсию (хотя бы частично), но насколько разумно в Rust создавать огромную башню замыканий для продолжения?
Αλεχ
причем я так и не понимаю, что аткое лайтфайм-ограничение на трейт
Αλεχ
это же параметр ПЕРЕМЕННОЙ, Как он может относитсья к трейту?
Αλεχ
у структур-о он используется чтобы пониматЬ, сколько вермени живет поле этой стркутуры
Αλεχ
но у трейтов не может быть полей
Cuno
но он как бы и подразумевает, что это утечка
там статик немного другое значение имеет
Cuno
это просто означает что в объекте нет заимствований
Αλεχ
вот что означает Foo : Clone + 'static?
Vladimir
Ссылку и не надо получать - нужно просто нечто с лайфтаймом (это не обязательно ссылка)
Αλεχ
Не путай статическую переменную и лайфтайм статик
лайфтайм статик - это ссылка на статическую переменную
Αλεχ
если я не прав, то мне нужно подробное объяснение ибо я всегда так считал
Vladimir
если я не прав, то мне нужно подробное объяснение ибо я всегда так считал
Любой овнед объект - имеет статик время жизни. Так как он не привязан ни к какому скопу
Vladimir
Ты его можешь протолкнуть куда угодно и он останется валидным
Vladimir
this
Либо есть но оно с статическим вж
Αλεχ
что такое овнед-объект?