Vladimir
Есть трейт NonZero, который даёт оптимизацию Option, но он тут не подойдёт
Vladimir
а какой трейт?
Денис
У вас тут высокоинтеллектуальные дискуссии, но позвольте простой вопрос: есть функция, в которой открывается файл, а потом делается serde_json, оба могу вернуть ошибки. Как правильно использовать failure или нужен ли он вообще, чтобы нормально описать тип на выходе? Или все-таки мапить ошибки?
#[derive(Fail, Debug)] enum GeneralError { #[fail(display = "Json error: {:?}", _0)] Json(#[cause] ::serde_json::Error), #[fail(display = "I/O error: {:?}", _0)] Io(#[cause] ::std::io::Error), } impl From<::std::io::Error> for GeneralError { fn from(e: ::std::io::Error) -> Self { GeneralError::Io(e) } } impl From<::serde_json::Error> for GeneralError { fn from(e: ::serde_json::Error) -> Self { GeneralError::Json(e) } }
Vladimir
Есть в найтли
Oleg
есть трейт Zeroable и структура NonZero
Sergey
А что?
оборвать это значит не дожидаться окончания передачи данных и оборвать соединение (если оно есть)
Vladimir
покажи
https://doc.rust-lang.org/core/nonzero/struct.NonZero.html
Маjко
Вот завезут const generics — можно будет отдельные значения исключать, наверное
Дак и сейчас можно было бы, если бы Option давал интерфейс для генерик тега Но это никому не нужно И конст генерики тут тоже ничего не дадут, никто не станет менять публичнй интерфейс опшна
Vladimir
Депрекейтед
Ну там ссылка на норм
Маjко
Они тоже депрекейтед
Маjко
Не депрекейтед только NotNull
Маjко
Но смысла в них во всех, это структурки, а не трейт
Маjко
https://doc.rust-lang.org/core/nonzero/trait.Zeroable.html
Маjко
Но вот это уже интересно
Маjко
Если бы не депрекейт
Маjко
Тут можно любую свою проверку запихать в is_zero
Vladimir
Если умеет, то все просто, передаешь ему идентификатор футорки и он дропает, если нет, то канал в футорку пробрасывай
Vladimir
Типа select(oneshot_rx, real_future)
Oleg
Но вот это уже интересно
ну так это же и естьпара к NonZero
Oleg
но вообще интересно
Oleg
в марте пропоузал запустился
Oleg
в июне уже депрекейтед
Маjко
Надо найти ишью с депрекейтом и написать plz dont
Маjко
И описать свой юзкейс
Vladimir
Да
Vladimir
Если речь про Токио, там вроде екзекуторы без возможности дропать футорки
Маjко
https://github.com/rust-lang/rust/issues/27730
Маjко
Короч там дохуя проблем
Маjко
И стабилизировать пока не хотят
Vladimir
https://github.com/rust-lang/rust/issues/49137
Vladimir
От того же типа
Vladimir
Что лайки не любит
Oleg
https://github.com/rust-lang/rfcs/issues/1230
Маjко
https://github.com/rust-lang/rust/issues/49137
Мерджи в PR саймона просто пиздец
Маjко
Куда иррелевантного буллшита
Маjко
в ченджах
պլհկ
Дропнутая футурка (as in drop()) отменяется сама
պլհկ
О чем разговор 🤔
Tuntz
ну
Tuntz
её никто не дёргает - она больше ничего не делает
Vladimir
Дропнутая футурка (as in drop()) отменяется сама
Ну футурка ж сама по себе не существует, крутится в рамках екзекутора
Tuntz
Ну футурка ж сама по себе не существует, крутится в рамках екзекутора
Что очень удобно - это тебе не горутина, которую запустил, а как выключить - хз.
Tuntz
Можно обернуть комбинаторные футуры в самописные и в своём poll() дропать и пересоздавать дочерние футуры как тебе вздумается
Vladimir
наверняка в гошке тоже можно обернуть горутины в свои обьекты и сделать там хендл события из канала
Berkus
many broken ext4 даже со специальным флагом, ибо сломали семантику относительно ext3
Vladimir
темболее, гошка впереди планеты всей
պլհկ
ну вообще у них долго этого не было
պլհկ
и все писали свои костыли на селектах
պլհկ
(прям как в расте)
Loo
https://github.com/solotzg/rs-lockfree
Loo
https://www.meetup.com/Rust-%D0%B2-%D0%9F%D0%B8%D1%82%D0%B5%D1%80%D0%B5 - следующий митап 12го числа
Loo
https://github.com/r-darwish/topgrade
Loo
https://github.com/ethanhs/cce
Loo
https://github.com/anordal/shellharden
John
https://www.meetup.com/Rust-%D0%B2-%D0%9F%D0%B8%D1%82%D0%B5%D1%80%D0%B5 - следующий митап 12го числа
А пицца будет? Я на митапы хожу только пиццу есть
Loo
https://github.com/ivanceras/diwata
Αλεχ
Подскажите, это можно победить нормально?
Αλεχ
fn get_file<'a, T: Iterator<Item = &'a std::io::Result<std::fs::DirEntry>>>(files: T, name: &str) -> Result<String, BuildError> { let opencv_world_entry = files.filter_map(|entry| entry.ok()).find(|entry| {
Αλεχ
error[E0507]: cannot move out of borrowed content --> build.rs:35:55 | 35 | let opencv_world_entry = files.filter_map(|entry| entry.ok()).find(|entry| { |
Αλεχ
классика
Αλεχ
хочу из итератора по файлам найти файл по имени
Αλεχ
но из-за того, что итератор должен быть не поглощающим все плохо
Αλεχ
где именно?
Маjко
Что тебе нужно?