Anonymous
лол))
Anton
Anton, сделай ошибки вариантами енама и юзай error_chain, кидать ошибки с строками — моветон
Знаю, просто это на ините - проверка конфига - лень было енум лепить
Anton
с error_chain сипотичней, но возни таки побольше
Anton
Еще один ламерский вопрос cfg.db.pool.idle_timeout = Duration::from_secs( db_pool.get(&Yaml::from_str("idle_timeout")) .ok_or(IdleTimeoutUndefined))? .as_i64() .ok_or(IdleTimeoutIsNotInt))? as u64 );
Anton
Как в цепочку добавить проверку if max < 60 && max > 600 IdleTimeoutInvlidRange
Anton
Походу все уснули
Alex
а почему это надо добавлять именно в цепочку?
Alexey
Как в цепочку добавить проверку if max < 60 && max > 600 IdleTimeoutInvlidRange
что-то вроде такого? db_pool.get(&Yaml::from_str("idle_timeout")) .ok_or(IdleTimeoutUndefined))? .as_i64() .ok_or(IdleTimeoutIsNotInt)) .and_then(|value| if value >= 60 && value <= 600 { Ok(value) } else { Err(IdleTimeoutInvalidRange) })? as u64 );
Alexey
хз, имхо лучше просто Yaml::from_str(...).вот().это().всё() в отдельную переменную вынести и отдельно уже проверить
Судзумия
у результата метод iter есть
Судзумия
то есть можно фильтр сделать
Alexey
а, ну да
Anton
А так, то что хотелось
Alexey
сорри
Alexey
но идея и так понятна
Судзумия
Alexey
так ещё лучше
Anton
Не будут
Anton
Или про фильтр?
Судзумия
Еще один ламерский вопрос cfg.db.pool.idle_timeout = Duration::from_secs( db_pool.get(&Yaml::from_str("idle_timeout")) .ok_or(IdleTimeoutUndefined))? .as_i64() .ok_or(IdleTimeoutIsNotInt))? as u64 );
Ну, тут вместе с моим кодом получается три типа на выбор Result<T, IdleTimeoutUndefined> Result<T, IdleTimeoutIsNotInt> Result<T, IdleTimeoutInvalidRange>
Судзумия
Если эти идлетаймауты не тайпалиасы к одному типу, конечно
Anton
ИМХО вариант с итером геморойней, так в конце нужно получить одно значение
Судзумия
ну, там одно же значение
Судзумия
Не понимаю твоего недовольства
Anton
Я не не доволен, просто возможно тут будет ковырятся чел который в расте ориентируется хуже чем я
Судзумия
Если чел плохо разбирается, то ему легче писать в императивном стиле
Судзумия
иф елс всё такое
Anton
ну да - в конце конуов - сделал в отдельную переменную, потом её проверяю - и только потом результат в Duration
Anton
Только тут ошибки несовместимые будут по типу, не должно компилироваться
Но вообще варианты которые предлогают проверяю, для самообразования, Ты был прав вариант с filter не компилит из-за несоотвествия типов
Anton
Чуток подправил работает, только почему то в таком виде .filter(|value| value >= &&60 && value <= &&600)
Anton
Не пользовался фитрами, там походу двойная ссылка
Судзумия
да
Alexey
а если into_iter() вместо iter()?
Судзумия
да, тогда будет один уровень ссылки
Anton
.into_iter() .filter(|value| value >= &1 && value <= &128)
Судзумия
А то я всё ещё не понимаю, как у тебя работает с несколькими типами ошибок
Судзумия
А, всё, тогда понятно
Судзумия
А то смутило :)
Судзумия
вдруг в раст уже эдхок полимофризм завезли, а я проспал 😆
Alexey
Result<T, Box<std::error::Error>>, лол
Судзумия
Ну такое
Alexey
ну да
Anton
На костылях
Alexey
потому там и написано «лол»
Alexey
¯\_(ツ)_/¯
Anton
Кстати
Anton
если .iter() нужно to_owned делать в отличии от into_iter
Anton
к шведенью, надо глянуть реализацию, возможно into - уже копирует
Alexey
.into_iter() .filter(|value| value >= &1 && value <= &128)
кстати, ещё, по идее, можно упростить до filter(|&value| value >= 1 && value <= 128)
Anonymous
блин поможите
Anton
у тебя инт
Anton
ты хочешь сделать указатель?
Anonymous
https://retep998.github.io/doc/winapi/basetsd/type.INT_PTR.html
Anonymous
да
Судзумия
блин поможите
Как помочь? инт нельзя задереференсить
Судзумия
блин поможите
без звезды
Anonymous
а как мне правильно это сделать тогда?
Судзумия
type INT_PTR = __int64; type __int64 = i64;
Anonymous
без звезды
Судзумия
покажи нотацию функции
Судзумия
а, птр
Anonymous
https://retep998.github.io/doc/user32/fn.GetDC.html
Судзумия
&mut intPtr as *mut HWND__
Alexey
user32::GetDC(std::ptr::null())
Alexey
или null_mut()
Alexey
да, null_mut(), потому что type HWND = *mut HWND__;
Судзумия
А, ему туда нулл нужен
Anonymous
спасибо!