Денис
Денис
а кинься ссылкой плз
Маjко
Но я хочу сначала логику запилить, а потом уже над оптимизациями развлекаться и контрибьютить
Маjко
Денис
спс
Маjко
Оно очень херовое, но работает и не прибито по поддержке API к тому до чего у авторов дошли руки обернуть
Денис
https://github.com/mgattozzi/github-rs/issues/145
Маjко
Daniil
Кто в лайфтайм параметрах шарит?
Pavel
Маjко
Daniil
for row in &table {
| ^^^^^ borrowed value does not live long enough
В table лежит структура куда я сразу пихаю парамеры
Маjко
Маjко
Можно только повторить то что сказал компилятор
Pavel
Маjко
row дропается раньше, чем все ссылки истекают
Денис
перевожу последнюю фразу: ты кладёшь в files_clients данные, которые инвалидируются к тому моменту, когда его пора отдавать наружу
Денис
возможно (возможно!) это можно починить, принимая html_files не по значению, а по указателю
Маjко
Ссылке *
Денис
спасибо)
сорян, сишный бэкграунд :(
Daniil
Pavel
Денис
Ща попробую
банальная логика: на выходе у тебя есть лайтайм, но ты нигде не принимаешь объекты с лайфтаймом.....
Cuno
Ща попробую
У тебя table умирает на каждой итерации, а ты элементы со ссылками на части этой table в вектор складываешь. Храни поля по знчению (String вместо &str)
Денис
Денис
это ведь плюс)
приятно осознавать, что кто-то так до сих пор считает =)
Cuno
имхо, это необязательно
Обязательно. Table внутри копирует судя по тому что у него лайфтайм параметра нет. https://docs.rs/table-extract/0.2.1/table_extract/struct.Table.html
Денис
Денис
Ща попробую
слушай @d34d10cc (Sad Cat), ссылки не помогут
Daniil
Вот и я пол дня голову ломаю
კაცი
Daniil
все! решил!
Daniil
Нигде лайфтайм параметр не ставишь => profit
И пользуешь только String
պլհկ
Решение 10/10
Маjко
Для начала сойдет)
Маjко
Я могу как-то отловить панику, случившуюся в треде?
Например подождать после спавна пару секунд, если паники не было — забить на тред и идти дальше?
Или как-то по-другому прокинуть ошибку в материнский тред?
Без костылей с ваншот каналами)
Ivan
А почему бы и не с oneshot каналом
Антон
red75prime
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
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
red75prime
Наверно поэтому и в стандартной библиотеке нет. Чтобы костыли не городить.
Денис
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
Денис
Кароч, в инете рыл рыл не нарыл. А проект горит и надо на расте;
есть вот такие структуры:
#[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
и не только
Cat
но это мелочи
Daniil
там 5 файлов, с кучей функций и тд.. Это только одна функция
Daniil
мне надо передать структуру внутри другой и затем это отправить дальше, как безболезненнее всего это сделать?
Денис
да ваще вроде только get_time не хватает
Cat
(всё, торможу уже)
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