Денис
а кинься ссылкой плз
Маjко
Но я хочу сначала логику запилить, а потом уже над оптимизациями развлекаться и контрибьютить
Маjко
а кинься ссылкой плз
https://docs.rs/github-gql-rs/0.0.1/github_gql/index.html
Денис
спс
Маjко
Оно очень херовое, но работает и не прибито по поддержке API к тому до чего у авторов дошли руки обернуть
Денис
https://github.com/mgattozzi/github-rs/issues/145
Маjко
https://github.com/mgattozzi/github-rs/issues/145
Ну да, автор тот же)
Daniil
Кто в лайфтайм параметрах шарит?
Маjко
вот прям описание основной проблемы экосистемы раста и либ вокруг)
В намного меньшей степени, чем в крестах, го и некоторых джаваподобных)
Cuno
Кто в лайфтайм параметрах шарит?
а лучше сразу пример проблемного кода на play.rust-lang.org
Pavel
В намного меньшей степени, чем в крестах, го и некоторых джаваподобных)
в упомянутых экосистемах - это не настолько проблема,можно такие какахи обернуть и жить. а в расте недальновидность автора либы - это боль
Daniil
for row in &table { | ^^^^^ borrowed value does not live long enough В table лежит структура куда я сразу пихаю парамеры
Маjко
Можно только повторить то что сказал компилятор
Маjко
row дропается раньше, чем все ссылки истекают
Денис
перевожу последнюю фразу: ты кладёшь в files_clients данные, которые инвалидируются к тому моменту, когда его пора отдавать наружу
Денис
возможно (возможно!) это можно починить, принимая html_files не по значению, а по указателю
Маjко
Ссылке *
Денис
спасибо) сорян, сишный бэкграунд :(
Денис
Ща попробую
банальная логика: на выходе у тебя есть лайтайм, но ты нигде не принимаешь объекты с лайфтаймом.....
Cuno
Ща попробую
У тебя table умирает на каждой итерации, а ты элементы со ссылками на части этой table в вектор складываешь. Храни поля по знчению (String вместо &str)
Денис
это ведь плюс)
приятно осознавать, что кто-то так до сих пор считает =)
Cuno
имхо, это необязательно
Обязательно. Table внутри копирует судя по тому что у него лайфтайм параметра нет. https://docs.rs/table-extract/0.2.1/table_extract/struct.Table.html
Денис
Ща попробую
слушай @d34d10cc (Sad Cat), ссылки не помогут
Daniil
Вот и я пол дня голову ломаю
კაცი
слушай @d34d10cc (Sad Cat), ссылки не помогут
можно не писать, кому надо, тот кликнет
Daniil
все! решил!
Daniil
Нигде лайфтайм параметр не ставишь => profit И пользуешь только String
պլհկ
Решение 10/10
Маjко
Для начала сойдет)
Маjко
Я могу как-то отловить панику, случившуюся в треде? Например подождать после спавна пару секунд, если паники не было — забить на тред и идти дальше? Или как-то по-другому прокинуть ошибку в материнский тред? Без костылей с ваншот каналами)
Ivan
А почему бы и не с oneshot каналом
red75prime
Или костыли с Drop, Arc<Atomic>`и `panicking()`
red75prime
Или те же самые костыли но, с catch_unwind
red75prime
Ещё можно комплексные костыли, с передачей JoinHandle в другой поток (watcher), прибиванием этого потока платформозависимым образом через 2 секунды и анализом того, что вернуло `watcher.join()`
andor0
Можно с каналом и https://doc.rust-lang.org/std/sync/mpsc/struct.Receiver.html#method.recv_timeout со стороны основного потока
red75prime
Можно с каналом и https://doc.rust-lang.org/std/sync/mpsc/struct.Receiver.html#method.recv_timeout со стороны основного потока
это костыли, а нужно без. определение костылей спрашивать у Mike
andor0
Что поделать если мониторов как в Erlang не завезли?
Денис
нужна обёртка над pthread_timedjoin_np
Денис
The pthread_timedjoin_np() function performs a join-with-timeout. If thread has not yet terminated, then the call blocks until a maximum time, specified in abstime. If the timeout expires before thread terminates, the call returns an error.
red75prime
Наверно поэтому и в стандартной библиотеке нет. Чтобы костыли не городить.
Денис
WaitForSingleObject в виндовс. На freeBSD вроде бы нет.
сорян, я не шарю во фряхе, там не птреды?
red75prime
pthread_timedjoin_np - это не posix
Денис
прогуглил, понял, спасибо)
Денис
могли бы кстати запилить extension trait чисто для линукса
Daniil
Кароч, в инете рыл рыл не нарыл. А проект горит и надо на расте; есть вот такие структуры: #[derive(Debug)] pub struct Client { name: String, surname: String, doc_number: String, date_in: String, date_out: String, city_tax: String } pub struct ExClient { client: Client, days: i64, calculations: String, } И вот такая функия, которая крашится где я передаю клиента: клиенту. Говорит cannot move out of borrowed content. Добрые люди, помоги исправить. https://gist.github.com/rust-play/7ca9a859dcc5636f4419eaa1123a430d
Cat
будет проще, если ты выложишь на плейграунд полный пример
не полный, но всё же https://play.rust-lang.org/?gist=7ca9a859dcc5636f4419eaa1123a430d&version=stable&mode=debug&edition=2015
Cat
и не только
Cat
но это мелочи
Daniil
там 5 файлов, с кучей функций и тд.. Это только одна функция
Daniil
мне надо передать структуру внутри другой и затем это отправить дальше, как безболезненнее всего это сделать?
Денис
да ваще вроде только get_time не хватает
Cat
(всё, торможу уже)
Денис
мне надо передать структуру внутри другой и затем это отправить дальше, как безболезненнее всего это сделать?
из описания не ясно, на каком этапе возникает проблема просто добавь get_time в свой пример, хотя бы в виде сигнатуры, и хотя бы в виде коментов напиши, как ты вызываешь prepare_table
Daniil
ага, кароч решил. Почему всегда находишь сразу после того как пошел за помощью.
Daniil
#[derive(Debug, Clone)] pub struct ExClient { client: Client, days: i64, calculations: String, }
Daniil
первая строка все решила
Cat
ну, так-то она не должна решать "moved out of borrowed content"
Daniil
я копирнул просто где надо, а без этой строчки клон() не работала
Daniil
у меня уже все болит, дедлайн в пн, а я раст открыл пару дней назад, почти 72 часа без нормального сна ))
Cat
проще было бы на си сделать
Cat
код чем-то похож на сишный
Cat
ха, "чем-то", посмотрел ещё раз
Daniil
да не спорю, хозяин барин, хочет на расте
Cat
да не спорю, хозяин барин, хочет на расте
мы тут новую технологию хотим @ вчера