Vladimir
Есть трейт NonZero, который даёт оптимизацию Option, но он тут не подойдёт
Vladimir
а какой трейт?
Vladimir
Oleg
Денис
У вас тут высокоинтеллектуальные дискуссии, но позвольте простой вопрос: есть функция, в которой открывается файл, а потом делается 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
А что?
оборвать это значит не дожидаться окончания передачи данных
и оборвать соединение (если оно есть)
Oleg
Evgεny
Vladimir
покажи
https://doc.rust-lang.org/core/nonzero/struct.NonZero.html
Маjко
Маjко
Они тоже депрекейтед
Маjко
Не депрекейтед только NotNull
Маjко
Но смысла в них во всех, это структурки, а не трейт
Маjко
https://doc.rust-lang.org/core/nonzero/trait.Zeroable.html
Маjко
Но вот это уже интересно
Маjко
Если бы не депрекейт
Маjко
Тут можно любую свою проверку запихать в is_zero
Vladimir
Vladimir
Если умеет, то все просто, передаешь ему идентификатор футорки и он дропает, если нет, то канал в футорку пробрасывай
Vladimir
Типа select(oneshot_rx, real_future)
Oleg
но вообще интересно
Oleg
в марте пропоузал запустился
Oleg
в июне уже депрекейтед
Маjко
Надо найти ишью с депрекейтом и написать plz dont
Sergey
Маjко
И описать свой юзкейс
Sergey
Vladimir
Да
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ко
Маjко
Куда иррелевантного буллшита
Маjко
в ченджах
պլհկ
Дропнутая футурка (as in drop()) отменяется сама
պլհկ
О чем разговор 🤔
Tuntz
ну
Tuntz
её никто не дёргает - она больше ничего не делает
Vladimir
Tuntz
Можно обернуть комбинаторные футуры в самописные и в своём poll() дропать и пересоздавать дочерние футуры как тебе вздумается
Vladimir
наверняка в гошке тоже можно обернуть горутины в свои обьекты и сделать там хендл события из канала
Berkus
Berkus
many broken ext4 даже со специальным флагом, ибо сломали семантику относительно ext3
պլհկ
Vladimir
темболее, гошка впереди планеты всей
Sergey
պլհկ
ну вообще у них долго этого не было
պլհկ
и все писали свои костыли на селектах
պլհկ
(прям как в расте)
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
Loo
https://github.com/ivanceras/diwata
Mark
Loo
Αλεχ
Подскажите, это можно победить нормально?
Αλεχ
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ко
Αλεχ
где именно?
Маjко
Что тебе нужно?